0

一共有三张桌子——

1) 学生 - 我的事实表(带有 FK ADDRESS_ID 的引用地址

2) 地址 - 此表包含 FK COUNTRY_ID 引用 COUNTRY

3)国家 - 这有一个我会显示的名称列。(PK 标识符)

我已经写了这个,但不确定它是否正确

基本上我想加入学生(事实表)到事实的国家组合 --- 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>
4

1 回答 1

0

你没有正确地加入。我将假设您的关系模式如下所示:

.-STUDENT-------.  
| IDENTIFIER PK |    .-ADDRESSES-----.
| ADDRESS_ID FK |----| IDENTIFIER PK |    .-COUNTRIES-----.
                     | COUNTRY_ID FK |----| IDENTIFIER PK |
                                          | NAME          |

JOIN 元素需要在最低粒度维表 ADDRESS 和上一级(COUNTRY)之间进行连接。连接这些表的键是 COUNTRY_ID(用于 ADDRESS)和 IDENTIFIER(国家)。leftKey 然后需要设置为 COUNTRY_ID。

此外,您正在使用关卡的 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>
于 2012-11-28T06:40:05.017 回答