1
假设我们有一个事实表“bi_slots”,其中有字段(id,region_id,city_id)。实际上有更多的领域,但他们在这里没有兴趣。在Mondrian/Saiku中创建来自不同表格名称的层次结构
还有'地区'表中有(id,name)字段和'cities'表(id,name,region_id)字段。
我需要的是为“bi_slots”的多维数据集制作维度,其中应用的是Region->Сity层次结构。而且,我需要从他们各自的表格中抓取地区和城市名称。
所以,外形尺寸是这样的:
<Dimension name="AddressDimension" caption="Address">
<Hierarchy name="AddressHierarchy" hasAll="true" primaryKey="id" caption="Region" allMemberCaption="Regions">
<Table name="regions"/>
<Level table="regions" column="id" nameColumn="name" name="RegionLevel" uniqueMembers="true" type="String" caption="Region"/>
<Level table="cities" column="id" nameColumn="name" name="CityLevel" uniqueMembers="true" type="String" caption="City"/>
</Hierarchy>
</Dimension>
和会议宣言的立方体与此dimensionUsage
<Cube name="SlotsCube" caption="Slot Cube">
<View alias="bi_slots">
<SQL><![CDATA[
select *, date_trunc('day', created_at) as date_created_at from bi_slots
]]></SQL>
</View>
<DimensionUsage name="AddressDimension" source="AddressDimension" foreignKey="region_id"/>
被放在这个样子,这让蒙德里安不显示这个立方体可言,但是当我从我的维度中删除CityLevel,我得到了一个完美的地区过滤。
任何帮助都会比欢迎,我们真的没有想法在这里。
想要在多维数据集视图中使用SQL实现什么?当有非常复杂的数据时,我可能会使用它两次?你真的可以简化从雪花到星型模式的事情吗?在ETL过程中使表地址(ID,City_Name,ID_Region,Region_Name)。将区域视为最高级别。当多维数据集设置中出现错误时,Saiku不显示多维数据集,您可以检出日志文件,或尝试在Pentaho Schema Workbench中修改xml。 – fenix 2014-08-27 19:55:20
视图中的SQL是无关紧要的,是一个只关心创建日期而不关注日期和时间的另一维度的简单转换。所以最好的做法是创建一个帮助表? – 2014-08-27 20:47:29
在少数情况下,雪花很有用:当您无法构建StarSchema时,如果存在多方关系,那么当您的尺寸为高基数时。在你的情况下,最好阅读日志文件并检查:http://mondrian.pentaho.com/documentation/schema.php#Star_schemas – fenix 2014-08-27 20:56:20