如何在mysql中配置Saiku的维度

如何在mysql中配置Saiku的维度,mysql,saiku,Mysql,Saiku,最近我试着用斋谷语。 我有一个mysql表,它存储每天的统计数据。其模式如下所示: CREATE TABLE `f_android_active_user_data` ( `event_date` date DEFAULT NULL, `channel_id` varchar(100) DEFAULT NULL, `version` varchar(100) DEFAULT NULL, `active_user_count` int(11) NOT NULL DEFAULT '0

最近我试着用斋谷语。 我有一个mysql表,它存储每天的统计数据。其模式如下所示:

CREATE TABLE `f_android_active_user_data` (
  `event_date` date DEFAULT NULL,
  `channel_id` varchar(100) DEFAULT NULL,
  `version` varchar(100) DEFAULT NULL,
  `active_user_count` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

现在我想将event_date配置为一个维度,但是,我没有看到如何使用表自己的列作为维度的示例。似乎关于赛库的资料不多。有人能帮忙解决这个问题吗?

数据集市不建议采用平板设计,但也不是不可能

作为一个对这本书严格要求的人,我建议你在单独的表中创建时间维度。即使将日期作为时间维度表中的主键,并作为联接也是不错的解决方案

选项1-最简单和最差的选项

在模式mondarian.xml中定义维度:

  <Dimension type="TimeDimension" visible="true" highCardinality="false" name="DateDimension">
    <Hierarchy visible="true" hasAll="true" primaryKey="event_date">
      <Table name="f_android_active_user_data" schema="public">
      </Table>
      <Level name="DateLevel" visible="true" column="event_date" type="String" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never">
      </Level>
    </Hierarchy>
  </Dimension>
现在,只剩下设置触发器了: 最好在插入触发器之后:

 UPDATE f_android_active_user_data
    SET DATE_FK = calendar_table.PK
    FROM calendar_table
    WHERE f_android_active_user_data.event_date = calendar_table.dt AND DATE_FK = NULL
<Dimension type="TimeDimension" visible="true" highCardinality="false" name="DateDimension">
    <Hierarchy visible="true" hasAll="true" primaryKey="dt">
      <Table name="calendar_table" schema="public">
      </Table>
      <Level name="YearLevel" visible="true" column="y" type="Numeric" uniqueMembers="false" levelType="TimeYears" hideMemberIf="Never">
      </Level>
      <Level name="MonthLevel" visible="true" column="m" type="Numeric" uniqueMembers="false" levelType="TimeMonths" hideMemberIf="Never">
      </Level>
      <Level name="DateLevel" visible="true" column="dt" type="String" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never">
      </Level>
    </Hierarchy>
  </Dimension>
ALTER table f_android_active_user_data ADD column DATE_FK INTEGER DEFAULT NULL
UPDATE f_android_active_user_data
SET DATE_FK = calendar_table.PK
FROM calendar_table
WHERE f_android_active_user_data.event_date = calendar_table.dt
 UPDATE f_android_active_user_data
    SET DATE_FK = calendar_table.PK
    FROM calendar_table
    WHERE f_android_active_user_data.event_date = calendar_table.dt AND DATE_FK = NULL