2016-10-25 6 views
0

Могу ли я каким-то образом фильтровать в DAX с несколькими столбцами?Условие с несколькими столбцами в DAX

Мне нужен фильтр, чтобы разница между двумя датами была ниже 300 дней, как показано ниже.

EVALUATE 
(
    CALCULATETABLE 
    (
     SUMMARIZE 
     (
      'Sales', 
      'Sales'[MaxDatum], 
      'Sales'[MinDatum] 
     ), 
     INT('Sales'[MaxDatum] - 'Sales'[MinDatum]) < 300    
    ) 
) 

Так что не удалось с этой ошибкой:

The expression contains multiple columns, but only a single column can be used in a True/False expression that is used as a table filter expression.

Я попробовал другую конструкцию этого запроса, как это, но в этом случае я не могу повторно вычисляемый элемент.

EVALUATE 
(
    CALCULATETABLE 
    (
     SUMMARIZE 
     (
      'Sales', 
      'Sales'[MaxDatum], 
      'Sales'[MinDatum], 
      "DIFF", INT('Sales'[MinDatum] - 'Sales'[MaxDatum]) 
     ), 
     [DIFF] < 300   
    ) 
) 

Возможно ли это как-то в DAX-запросе?

Спасибо за вашу помощь

ответ

1

Попробуйте это:

EVALUATE 
(
    FILTER (
     ADDCOLUMNS (Sales, "Diff", 1 * (Sales[MaxDatum] - Sales[MinDatum])), 
     [Diff] < 300 
    ) 
) 

Если вы используете SSAS 2016, Excel 2016 или Могущество BI вы можете использовать функцию DATEDIFF, которая является более надежным способом расчета времени дельт ,

Дайте мне знать, если это поможет.

+0

Спасибо. Это работает правильно, но в чем причина добавления «1 *» в этот запрос? – Bushwacka

+0

@Bushwacka, 1 * - неявное преобразование данных, в основном я конвертирую разницу между обе датами в целых числах. Вы можете использовать также функцию «INT()». –

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