2015-09-21 2 views
0

Я строю табличную модель SSAS для MySQL-приложения SugarCRM. Одной из неприятных особенностей SugarCRM является создание таблицы моста (т. Е. Отношения many-to-many) в случаях, когда real отношение - это только one-to-many. Эта избыточная таблица моста вызывает проблему, когда мне нужно получить значение из таблицы на стороне one в расчетный столбец в таблице на стороне many.Mimic RELATED через таблицу переходов в DAX

Я пытался что-то вроде как вычисляемый столбец в таблице на many стороне:

= 
CALCULATE (
    VALUES ('OneSideTable'[field_i_need]), 
    FILTER (
     'OneSideTable', 
     CALCULATE (
      COUNTROWS (
       FILTER (
        'BridgeTable', 
        'BridgeTable'[ManyTableID] = ManyTable[ID] 
       ) 
      ) 
     ) 
      = 1 
    ) 
) 

Но выдает ошибку:

The value for column 'ID' in table 'ManyTable' cannot be determined in the current context. Check that all columns referenced in the calculation expression exist, and that there are no circular dependencies. This can also occur when the formula for a measure refers directly to a column without performing any aggregation--such as sum, average, or count--on that column. The column does not have a single value; it has many values, one for each row of the table, and no row has been specified.

Существуют ли способы, чтобы имитировать ОТНОСЯЩЕЙСЯ функцию в данном конкретном случае?

ответ

0

Похоже, я нашел решение, и, кажется, немного проще, что я думал раньше:

= 
CALCULATE (
    VALUES ('BridgeTable'[OneTableID]), 
    FILTER (
     RELATEDTABLE ('BridgeTable'), 
     'BridgeTable'[deleted] = 0 
    ) 
) 

Обратите внимание на то, используя правило 'BridgeTable'[deleted] = 0 фильтрации, чтобы избежать неактивный связанный OneTableID. Это особая особенность, связанная с SugarCRM.

Смежные вопросы