さて、私はこれを行う方法を見つけました。
解決サイクル
ロールとリソースはどちらもテーブルからのものであるためRESOURCE
、モンドリアンはそれを処理できず、サイクルに陥りました。
RESOURCE
テーブルのエイリアスでこれを解決しました:
<Table name="resource" schema="public" keyColumn="id" alias="role"/>
リンク テーブル
どのリソースがどのロールに属しているかを Mondrian に知らせるには、両方のテーブルをリンクする必要があります。
そのため、リソース テーブルにキーがあることが重要です。
<Table name="resource" schema="public" keyColumn="id"/>
これで、リソースをそのロールにリンクできます。
<Link target='resource' source='role' foreignKeyColumn='role_id'/>
寸法を定義する
最初に混乱するのは、ロール ディメンションがテーブル リソースを必要とすることです。これは、ファクト テーブルが のみを認識し、を認識しRESOURCE_ID
ないためROLE_ID
です。ただし、すべてのリソースはそのロールにリンクされているため、属性を使用してロール固有のフィールドを定義できます。
<Dimension name="Role" table="resource" key="ID">
<Attributes>
<Attribute name="ID" keyColumn="id" hasHierarchy="false"/>
<Attribute name="Title" table="role" keyColumn="title"/>
</Attributes>
</Dimension>
ディメンションを使用する
ディメンションを使用するには、キューブ ディメンションでディメンションを使用しRESOURCE_ID
、ファクト テーブルの をロール ディメンションにリンクする必要があります。
用途:
<Dimension source="Role"/>
寸法リンク:
<ForeignKeyLink dimension="Role" foreignKeyColumn="resource_id"/>