• workbench的schema讲解一:(维度dimension设置的基本内容)


     维度名字尽量用英文:因为,saiku读取schema配置文件时,用中文会出现不可预知的错误。比如,引用维度用中文,就容易出现不可预估的错误。如果要显示中文:每个对象的caption字段里键入中文,则可在使用时显示中文。

    cube的cache属性 取消勾选(计算出错,往往是因为这个问题)

    (1)维度dimension设置:

    事实表外键和维度表主键关联:从不同维度查询,实际就是两个表联合查询,本质是两个表做自然连接,因此事实表主键和维度表外键要一致,一一对应。如果类型不一致,报错:

    SQLException: IDB-1002: 'factdownloadsnew' and 'dimstore' have incompatible column type specified for join condition.

    错误设置为事实表外键用datevalue,维度表主键设为id。

    (2)column设置:这是选择要查看什么内容(本质是 group by column的设定)看哪一列,比如月份,选month,则在主外键自然连接后,按month做group by,进行统计。

    但saiku会自动加上该列的上一级列,进行操作,如month会自动加上year:

    saiku自动生成的sql语句为:

    SELECT
    `dimDate`.`year` AS `c0`,
    `dimDate`.`month` AS `c1`,
    sum(
    `factDownloadsNew`.`downloads`
    )AS `m0`
    FROM
    `dimDate` AS `dimDate`,
    `factDownloadsNew` AS `factDownloadsNew`
    WHERE
    `factDownloadsNew`.`date_time` = `dimDate`.`datevalue` // 自然连接要对应
    GROUP BY
    `dimDate`.`year`,
    `dimDate`.`month`

    group by也自动变成两列。

    结果:

    对比,将column设置为datevalue(原来是month):

    SELECT
    `dimDate`.`year` AS `c0`,
    `dimDate`.`datevalue` AS `c1`,
    sum(
    `factDownloadsNew`.`downloads`
    )AS `m0`
    FROM
    `dimDate` AS `dimDate`,
    `factDownloadsNew` AS `factDownloadsNew`
    WHERE
    `factDownloadsNew`.`date_time` = `dimDate`.`datevalue`
    GROUP BY
    `dimDate`.`year`,
    `dimDate`.`datevalue`

    (3)namecolumn不设定,默认为用column。要显示的内容。

    总结:

    维度度主外键关联,实现自然连接;

    column为查看内容,实现group by。自动加上一级。

  • 相关阅读:
    【css】如何实现响应式布局
    【PHP】foreach语法
    【css】cursor鼠标指针光标样式知识整理
    【JavaScript】修改图片src属性切换图片
    【PHP】PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
    【PHP】常用的PHP正则表达式收集整理
    【Mysql】mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
    js获取url参数的方法
    SQL Server 2008 geometry 数据类型
    SQL Server 存储过程之基础知识(转)
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205511.html
Copyright © 2020-2023  润新知