有三个表 -
1)学生 - 我的事实表(参考地址与FK ADDRESS_ID
2)地址 - 此表包含FK COUNTRY_ID引用COUNTRY
3)国家/地区 - 我有一个NAME COLUMN,我会显示。 (PK IDENTIFIER)
我写过这个但不确定是否正确
基本上我想加入学生(FACT TABLE)到国家 事实的消耗--- Def ..然后这个
<Dimension foreignKey="ADDRESS_ID" name="COUNTRY">
<Hierarchy name="COUNTRY NAME" hasAll="true" primaryKey="IDENTIFIER" primaryKeyTable="ADDRESSES">
<Join leftKey="IDENTIFIER" rightKey="IDENTIFIER">
<Table name="ADDRESSES" >
</Table>
<Table name="COUNTRIES" >
</Table>
</Join>
<Level name="Country Name" visible="true" table="COUNTRIES" column="NAME" nameColumn="NAME" uniqueMembers="false">
</Level>
</Hierarchy>
</Dimension>
答案 0 :(得分:0)
您尚未正确连接。我将假设您的关系模式如下所示:
.-STUDENT-------.
| IDENTIFIER PK | .-ADDRESSES-----.
| ADDRESS_ID FK |----| IDENTIFIER PK | .-COUNTRIES-----.
| COUNTRY_ID FK |----| IDENTIFIER PK |
| NAME |
JOIN元素需要在最低粒度维度表ADDRESS和下一级别(COUNTRY)之间建立连接。连接这些表的键是COUNTRY_ID(对于ADDRESS)和IDENTIFIER(COUNTRY)。然后需要将leftKey设置为COUNTRY_ID。
此外,您正在使用Level的nameColumn属性,但这实际上用于设置级别自己的名称,而不是成员名称。我会删除它。总之,你会看到这样的东西:
<Dimension foreignKey="ADDRESS_ID" name="COUNTRY">
<Hierarchy name="COUNTRY NAME" hasAll="true" primaryKey="IDENTIFIER" primaryKeyTable="ADDRESSES">
<Join leftKey="COUNTRY_ID" rightKey="IDENTIFIER">
<Table name="ADDRESSES" >
</Table>
<Table name="COUNTRIES" >
</Table>
</Join>
<Level name="Country Name" visible="true" table="COUNTRIES" column="NAME">
</Level>
</Hierarchy>
</Dimension>