1

RESOURCE_IDリソース テーブルにリンクするファクト テーブルがあります。リソースには、それ自体がリソースであるという役割があります。

.--FACTTABLE--.  
| IDENTIFIER  |    .--RESOURCE---.
| RESOURCE_ID |----| RESOURCE_ID |    .--RESOURCE---.
                   | ROLE_ID     |----| RESOURCE_ID |
                                      | TITLE       |

ROLEここで、属性を含むディメンションを作成したいと考えていますTITLE

これを行う方法?Mondrian 4スキーマの例をいただければ幸いです。

<Link>for<PhysicalSchema><ForeignKeyLink>forがあること<DimensionLinks>は知っていますが、それらを適切に使用する方法がわかりません。

4

1 に答える 1

1

さて、私はこれを行う方法を見つけました。


解決サイクル

ロールとリソースはどちらもテーブルからのものであるため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"/>
于 2016-07-19T14:28:43.427 に答える