2015-06-30 3 views
0

Я работаю с ролями в мондрийской схеме, и я хотел бы узнать, если можно сделать пересечение двух объявленных ролей.Pentaho Role Intersection

Я создал эти роли:

Для менеджера продукта, который имеет ограничение по конкретным видам продукции

<Role name="product_manager"> 
    <SchemaGrant access="none"> 
     <CubeGrant cube="product" access="all"> 
      <HierarchyGrant hierarchy="product_group" rollupPolicy="partial" access="custom"> 
      <MemberGrant member="[product_group].[Wardrobes]" access="all"> 
      </MemberGrant> 
      </HierarchyGrant> 
     </CubeGrant> 
    </SchemaGrant> 
    </Role> 

И финансовый менеджер, который имеет ограничение по конкретной стране

<Role name="financial_manager"> 
     <SchemaGrant access="none"> 
      <CubeGrant cube="country" access="all"> 
       <HierarchyGrant hierarchy="country" rollupPolicy="partial" access="custom"> 
       <MemberGrant member="[country].[Germany]" access="all"> 
       </MemberGrant> 
       </HierarchyGrant> 
      </CubeGrant> 
     </SchemaGrant> 
     </Role> 

Мой требуемый результат должно быть пересечение этих двух ролей, я обнаружил, что существует элемент UNION, но я нашел что он возвращает сумму обоих, так что пользователь может видеть все с обоих, это не мое требуемое решение.

<Role name="product_and_financial_manager_for_wardrobes_and_germany_resort"> 
    <Union> 
     <RoleUsage roleName="product_manager" /> 
     <RoleUsage roleName="financial_manager" /> 
    </Union> 
    </Role> 

Что-то вроде этого:

<Role name="product_and_financial_manager_for_wardrobes_and_germany_resort"> 
     <Intersection> 
      <RoleUsage roleName="product_manager" /> 
      <RoleUsage roleName="financial_manager" /> 
     </Intersection> 
     </Role> 

Это пример данных:

fact_product

--------------------------------------------------------------------------- 
| id_fact_product | price | id_dim_product_group | id_dim_country 
--------------------------------------------------------------------------- 
| 1     | 100  | 1     | 1 
--------------------------------------------------------------------------- 
| 2     | 150 | 1     | 2 
--------------------------------------------------------------------------- 
| 3     | 120 | 2     | 2 
--------------------------------------------------------------------------- 
| 4     | 230 | 1     | 2 
--------------------------------------------------------------------------- 

dim_product_group

---------------------------------------------- 
| id_dim_product_group | section 
---------------------------------------------- 
| 1     | Wardrobes 
---------------------------------------------- 
| 2     | Tables 
---------------------------------------------- 

dim_country

---------------------------------------------- 
| id_dim_country  | country 
---------------------------------------------- 
| 1     | Italy 
---------------------------------------------- 
| 2     | Germany 
---------------------------------------------- 

Результат для Role product_and_financial_manager_for_wardrobes_and_germany_resort должны видеть данные только в этом диапазоне

----------------------------------------------------------------------------- 
    | id_fact_product | price | id_dim_product_group | id_dim_country 
    --------------------------------------------------------------------------- 
    | 2     | 150 | 1     | 2 
    --------------------------------------------------------------------------- 
    | 4     | 230 | 1     | 2 
    --------------------------------------------------------------------------- 
---------------------------------------- 
    | section   | country | 
    ----------------------------------- 
    | Wardrobes   | Germany | 
    ----------------------------------- 
    | Wardrobes   | Germany | 
    ----------------------------------- 

Спасибо вам помочь

ответ

0

Th В Мондриане такой функции нет. Я предлагаю создать билет в Jira tracker.

Кроме того, вы могли бы implement the Role interface и передать его в ваше соединение.