我正在尝试在蒙德里安模式中定义时间维度。在蒙德里安时间维度中,它需要 3 个级别类型必须是 Years
, Quarters
, Months
.
但我的表只包含一个日期字段。那么怎么可能呢?
我可以在中使用 postgreSQL 查询Mondrian
吗?所以我可以使用 3 个查询来选择Years
,Quarters
并Month
从单个日期字段中选择。
我正在尝试在蒙德里安模式中定义时间维度。在蒙德里安时间维度中,它需要 3 个级别类型必须是 Years
, Quarters
, Months
.
但我的表只包含一个日期字段。那么怎么可能呢?
我可以在中使用 postgreSQL 查询Mondrian
吗?所以我可以使用 3 个查询来选择Years
,Quarters
并Month
从单个日期字段中选择。
创建只有一个日期列的简单表:
create table tmp_cube as (select generate_series('2011-01-01'::date, '2012-01-01'::date, '1 day')::date gs);
创建虚拟立方体:
<Schema name="New Schema1">
<Cube name="Test" visible="true" cache="true" enabled="true">
<Table name="tmp_cube" schema="public" alias="">
</Table>
<Dimension type="TimeDimension" visible="true" foreignKey="gs" name="Time Dimension">
<Hierarchy name="New Hierarchy 0" visible="true" hasAll="true" primaryKey="gs">
<View alias="test_view">
<SQL dialect="generic">SELECT gs, extract(year from gs) as year, extract(quarter from gs) as quarter, extract(month from gs) as month FROM tmp_cube</SQL>
</View>
<Level name="Year" visible="true" column="year" type="Integer" internalType="int" uniqueMembers="false" levelType="TimeYears">
</Level>
<Level name="Quarter" visible="true" column="quarter" type="Integer" uniqueMembers="false" levelType="TimeQuarters">
</Level>
<Level name="Month" visible="true" column="month" type="Integer" uniqueMembers="false" levelType="TimeMonths">
</Level>
</Hierarchy>
</Dimension>
<Measure name="Count Rows" column="gs" aggregator="count" visible="true">
</Measure>
</Cube>
</Schema>
现在我在 Saiku 中看到: