2016-07-26 3 views
0

Я пытаюсь создать вычисляемый столбец в табличной модели SSAS с DAX. Мне нужен столбец динамического индекса в таблице. Это означает, что индекс начинается с 0, когда таблица фильтруется. Представьте, у вас есть таблица, как:DAX - Создать колонку динамического индекса

item  index 
apple  0 
banana 1 
celery 2 
broccoli 3 

Если отфильтровать таблицу только овощи обычно индекс будет по-прежнему:

item  index 
celery 2 
broccoli 3 

Но я хочу, чтобы это было

item  index 
celery 0 
broccoli 1 

Так Я создаю индекс с: (я индексирую таблицу измерения даты)

=CALCULATE(COUNT([Date])-1, ALL('DimDate'), FILTER(DimDate, [Date]<=EARLIER([Date]))) 

Я попытался использовать ALLEXCEPT(), и я попытался сделать столбец Offset, получив первое значение индекса с помощью FIRSTNONBLANK, но еще не достиг успеха.

Любые идеи или помощь?

ответ

0

У вас не может быть динамического расчетного столбца, потому что расчетные столбцы оцениваются и сохраняются во время разработки. Поэтому вам нужно будет использовать меру для динамической индексации. Ниже приведен один подход ниже, используя ALLSELECTED с дополнительным синтаксическим анализом, чтобы отобразить пустой как ноль.

= 
IF (
    ISBLANK (
     CALCULATE (
      COUNTROWS (DimDate), 
      FILTER (ALLSELECTED (DimDate), DimDate[Date] < MAX (DimDate[Date])) 
     ) 
    ), 
    0, 
    CALCULATE (
     COUNTROWS (DimDate), 
     FILTER (ALLSELECTED (DimDate), DimDate[Date] < MAX (DimDate[Date])) 
    ) 
) 
Смежные вопросы