1

假设我们有一个事实表“bi_slots”,其中有字段(id、region_id、city_id)。实际上还有更多的领域,但在这里它们并不感兴趣。

还有一个'regions'表,其中有(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>

以及具有此维度的 Cube 的声明Usage

<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 时,我得到了一个非常精细的区域过滤。

任何帮助都会非常受欢迎,我们真的没有想法。

4

1 回答 1

-1

You cannot add columns from different tables just like that.

First, and as pointed out in the comments to the post, you should use a star schema.

But, if you can't or don't want to, you can create the join, specifying the various tables involved and how to join. Only after defining it you can reference columns in different tables in the same dimension.

See chapter 4 of the documentation.

于 2014-08-29T09:17:11.380 回答