Kylin创建Cube分析

 https://blog.csdn.net/seashouwang/article/details/82840356

https://blog.csdn.net/zhangxiaomei1952/article/details/79273599

https://blog.csdn.net/weixin_33310807/article/details/107074534

https://blog.csdn.net/u010429286/article/details/72722597

//创建好模型

//通过查询Sql 

模型 == 数据集

由于星形模型 ,所以只有事实表才有度量,参与计算

//设置聚合组 ,包含 聚合组 包含维度|层次维度|强制维度|联合维度|衍生维度

聚合组 包含所有维度  如果找不到 优化维度 默认取它

层次维度 适合层级 省市区 年月日等

强制维度 适合 可以将确定在查询时一定会使用的维度设为强制维度。例如,时间维度。 适合一定会用到得查询条件

联合维度 用的频率不高的多个查询条件 

联合维度:将几个维度视为一个维度。

适用场景: 1 可以将确定在查询时一定会同时使用的几个维度设为一个联合维度。

2 可以将基数很小的几个维度设为一个联合维度。

3 可以将查询时很少使用的几个维度设为一个联合维度。

优化效果:将N个维度设置为联合维度,则这N个维度组合成的cuboid个数会从2的N次方减少到1。

衍生维度:

在OLAP分析场景中,经常存在对某个id进行过滤,但查询结果要展示为name的情况,比如user_id和user_name。这类问题通常有三种解决方式:

a. 将ID和Name都设置为维度,查询语句类似select name, count(*) from table where id = 1 group by id,name。这种方式的问题是会导致维度增多,导致预计算结果膨胀;

b. 将id和name都设置为维度,并且将两者设置为联合。这种方式的好处是保持维度组合数不会增加,但限制了维度的其它优化,比如ID不能再被设置为强制维度或者层次维度;

c. 将ID设置为维度,Name设置为特殊的Measure,类型为Extended Column。这种方式既能保证过滤id且查询name的需求,同时也不影响id维度的进一步优化。

所以此类需求我们推荐使用 Extended Column。
{
  "uuid": "5c30dfbf-3591-706f-1d70-fdc6588eef1b",
  "last_modified": 1598857840165,
  "version": "3.0.0.20500",
  "name": "hy_data_model",
  "owner": "ADMIN",
  "is_draft": false,
  "description": "",
  "fact_table": "HY.HUNYIN_JHS",
  "fact_table_alias": "HUNYIN_JHS",
  "lookups": [
    {
      "table": "HY.HUNYIN_JHS_CP",
      "kind": "LOOKUP",
      "alias": "HUNYIN_JHS_CP",
      "join": {
        "type": "left",
        "primary_key": [
          "HUNYIN_JHS_CP.ID"
        ],
        "foreign_key": [
          "HUNYIN_JHS.ID"
        ]
      }
    }
  ],
  "dimensions": [
    {
      "table": "HUNYIN_JHS",
      "columns": [
        "BIAX0001",
        "ID",
        "AIAX0001",
        "AIAX0002",
        "AIAE0004",
        "AIAP0005",
        "AIAP0006",
        "AIAP0007",
        "AIAP0008",
        "AIAX0009",
        "AIAX0010",
        "AIAP0011",
        "AIAP0012",
        "AIAP0013",
        "AIAP0014",
        "AIAP0016",
        "AIAP0017",
        "AIAP0018",
        "AIAP0019",
        "AIAP0015",
        "AIAP0020",
        "AIAP0021",
        "AIAP0022",
        "AIAP0023",
        "AIAP0024",
        "AIAP0033",
        "AIAP0034",
        "AIAX0035",
        "AIAX0036",
        "AIAX0039",
        "AIAX0040",
        "AIAX0041",
        "AIAX0042",
        "AIAX0043",
        "AIAE0045",
        "AIAX0046",
        "AIAX0047",
        "AIAX0048",
        "AIAX0049",
        "AIAX0053",
        "AIAX0054",
        "AIAX0055",
        "AIAX0062",
        "AIAX0063",
        "AIAX0064",
        "AIAX0066",
        "AIAX0067",
        "AIAE0068"
      ]
    },
    {
      "table": "HUNYIN_JHS_CP",
      "columns": [
        "ID",
        "BIAX0001",
        "AIAX0001",
        "AIAX0002",
        "AIAE0004",
        "AIAP0005",
        "AIAP0006",
        "AIAP0007",
        "AIAP0008",
        "AIAX0009",
        "AIAX0010",
        "AIAP0011",
        "AIAP0012",
        "AIAP0013",
        "AIAP0014",
        "AIAP0015",
        "AIAP0016",
        "AIAP0017",
        "AIAP0018",
        "AIAP0019",
        "AIAP0020",
        "AIAP0021",
        "AIAP0022",
        "AIAP0023",
        "AIAP0024",
        "AIAP0033",
        "AIAP0034",
        "AIAX0035",
        "AIAX0036",
        "AIAX0040",
        "AIAX0039",
        "AIAX0041",
        "AIAX0042",
        "AIAX0043",
        "AIAE0045",
        "AIAX0046",
        "AIAX0047",
        "AIAX0048",
        "AIAX0049",
        "AIAX0053",
        "AIAX0054",
        "AIAX0055",
        "AIAX0062",
        "AIAX0063",
        "AIAX0064",
        "AIAX0066",
        "AIAX0067",
        "AIAE0068",
        "AIAE0069",
        "AIAE0070",
        "AIAX0071",
        "BIAX0030",
        "BIAX0031",
        "BIAX0032",
        "BIAX0033",
        "BIAX0034",
        "BIAX0035"
      ]
    }
  ],
  "metrics": [
    "HUNYIN_JHS.AIAE0070",
    "HUNYIN_JHS.AIAX0071",
    "HUNYIN_JHS.AIAE0069",
    "HUNYIN_JHS.BIAX0030",
    "HUNYIN_JHS.BIAX0031",
    "HUNYIN_JHS.BIAX0032",
    "HUNYIN_JHS.BIAX0033",
    "HUNYIN_JHS.BIAX0034",
    "HUNYIN_JHS.BIAX0035",
    "HUNYIN_JHS.BIAX0036",
    "HUNYIN_JHS.BIAX0037",
    "HUNYIN_JHS.BIAX0038",
    "HUNYIN_JHS.BIAX0039",
    "HUNYIN_JHS.SUBJECT_FLAG",
    "HUNYIN_JHS.TONG_TIME"
  ],
  "filter_condition": "",
  "partition_desc": {
    "partition_date_column": null,
    "partition_time_column": null,
    "partition_date_start": 0,
    "partition_date_format": "yyyy-MM-dd",
    "partition_time_format": "HH:mm:ss",
    "partition_type": "APPEND",
    "partition_condition_builder": "org.apache.kylin.metadata.model.PartitionDesc$DefaultPartitionConditionBuilder"
  },
  "capacity": "MEDIUM",
  "projectName": "test"
}

创建Cube

{
  "uuid": "98a5ef2e-35a4-a4a9-f42b-602d1a037c31", //唯一ID
  "last_modified": 1598691546180, ##修改时间戳
  "version": "3.0.0.20500", ##当前版本
  "name": "testc1", ## Cobe名称
  "is_draft": false, ##是否草稿
  "model_name": "test11", ##模型名称
  "description": "", ##备注
  "null_string": null,
  "dimensions": [  ##尺寸  这个 Cube 用于在最高级别收集查询指标
    {
      "name": "ID",  # 字段名
      "table": "HUNYIN_JHS", #表名
      "column": "ID", #列名
      "derived": null #派生得列 可能记录得是字段名
    },
    {
      "name": "AIAX0001",
      "table": "HUNYIN_JHS",
      "column": "AIAX0001",
      "derived": null
    }
  ],
  "measures": [     #测量 此处代表 计算得列
    {
      "name": "_COUNT_",  #名称
      "function": {   #计算方法
        "expression": "COUNT", #表达式
        "parameter": { #参数
          "type": "constant", #类型
          "value": "1"   #值
        },
        "returntype": "bigint" #返回类型
      }
    }
  ],
  "dictionaries": [], #词典
  "rowkey": { #主键
    "rowkey_columns": [ #主键列名
      {
        "column": "HUNYIN_JHS.ID", #主键列1 名
        "encoding": "dict",  #--编码 字段
        "encoding_version": 1, #--编码版本
        "isShardBy": false  ## 是否分片 “shard by”维度列 选择基数高的维度做分片(sharding)如useid列 可以使MR构建过程按照该列进行重新分布,加快构建速度
      },
      {
        "column": "HUNYIN_JHS.AIAX0001",
        "encoding": "dict",
        "encoding_version": 1,
        "isShardBy": false 
      }
    ]
  },
  "hbase_mapping": { ##hbase 配置
    "column_family": [  ## 柱族 将多个列聚合成一个列族 https://blog.csdn.net/u011974797/article/details/81511393 
      {
        "name": "F1", #柱族名称
        "columns": [ #包含列 
          {
            "qualifier": "M", ##限定符
            "measure_refs": [ ## --测量参考文献
              "_COUNT_" ## 列名
            ]
          }
        ]
      }
    ]
  },
  "aggregation_groups": [ ## 聚合组
    {
      "includes": [       ## 包含字段
        "HUNYIN_JHS.ID",
        "HUNYIN_JHS.AIAX0001"
      ],
      "select_rule": {    ##查询规则
        "hierarchy_dims": [], # 层次维度
        "mandatory_dims": [], #强制维度
        "joint_dims": [] #联合维度
      }
    }
  ],
  "signature": "+bOiviiaq97An7FdRXaA5Q==", #签名
  "notify_list": [], # -- 通知清单
  "status_need_notify": [ #--状态需要通知
    "ERROR",
    "DISCARDED",
    "SUCCEED"
  ],
  "partition_date_start": 0,# 分区开始日期
  "partition_date_end": 3153600000000, #分区结束日期
  "auto_merge_time_ranges": [ # 合并时间范围 7天到28天
    604800000,
    2419200000
  ],
  "volatile_range": 0, #最近 N 天的 Segments 不作合并,适用于因数据延迟导致最近 N 天数据会有波动,需要刷新 Segments 的情况。
  "retention_range": 0, # 生命周期,自动删除 N 天以前的 Segment
  "engine_type": 2, #engine_type对应的四个值,表示 int ID_MR_V1 = 0;int ID_MR_V2 = 2;int ID_MR_II = 3;int ID_SPARK = 4; 发动机引擎
  "storage_type": 2, #表示立方体存储类型 ID_HBASE = 0; ID_HYBRID = 1; ID_SHARDED_HBASE = 2;
  "override_kylin_properties": {}, #重写kylin属性
  "cuboid_black_list": [], ##--长方体黑名单
  "parent_forward": 3, #--父类转发
  "mandatory_dimension_set_list": [],#--必须的维度集合表
  "snapshot_table_desc_list": [] #--快照表描述列表
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值