Как я могу написать измерение со схемой снежинки?, Подробности ниже

Есть три таблицы -

1) Студент - Моя таблица фактов (ссылки на адреса с FK ADDRESS_ID

2) Адреса - эта таблица содержит ссылки FK COUNTRY_ID COUNTRY

3) Страна - здесь есть КОЛОНКА ИМЕНИ, которую я бы отображал. (ИДЕНТИФИКАТОР ПК)

Я написал это, но не уверен, что это правильно

По сути, я хочу присоединиться к Студенту (FACT TABLE) в страну Consosts of Fact --- 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>

1 ответ

Вы не сделали соединение правильно. Я предполагаю, что ваша реляционная схема выглядит следующим образом:

.-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.

Кроме того, вы используете атрибут 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>
Другие вопросы по тегам