2016-01-08 4 views
1

Я анализирую данные о распределении продуктов. Мы хотим получить снимок рынка проникновения [Глубина].DAX [SSAS Tabular] DISTINCTCOUNT с lastnonempty date

Depth := DIVIDE (
    [Count of ranged product/store distribution points], 
    [Count of audited product/store distribution points] 
) 

У меня есть 2 таблицы: 'Distribution' (аудит точек распределения); и «Календарь» (таблица дат). Они связаны в модели.

Для моментального снимка 30 июня 2015 года я не хочу включать новые продукты/магазины с 15 ноября, но я хочу включить любые точки данных, которые были проверены за последние 3 месяца.

Логически числитель является отфильтрованным подмножеством знаменателя, поэтому сначала мне нужен знаменатель, в котором я застрял.

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

  • Месяц, Знаменатель
  • Mar-15, 1
  • Apr-15, 0
  • Май-15, 0
  • Июнь-15, 2
  • Июль-15, 6
  • августа-15, 5
  • сентября-15, 1
  • Окт-15, 40
  • ноября-15, 53
  • Dec-15, 92

Но я хочу что-то, что выглядит следующим образом:

  • месяц, Знаменатель
  • Mar-15, 150
  • Apr-15, 150
  • май-15, 150
  • июн-15, 170 - добавить 1 новый продукт в 20 магазинах
  • Июль-15, 170
  • Август-15, 170
  • Sep-15, 170
  • Окт-15, 200 - добавить 1 Новый продукт в 30 магазинах
  • Nov-15, 200
  • Dec-15, 200

Мне нужно удалить контекст фильтра на распределение [дата] и применить фильтр по распределению распределения [Дата] < = Календарь [дата], а затем сделать подсчет различных, но я получить ошибки.

Count of audited product/store distribution points:= 
CALCULATE(
    COUNTROWS ( 
     VALUES (Distribution[ProductStoreKey]) 
    ), 
    NOT (Distribution[Status On Exit] = "Ineligible"), 
    FILTER (
     ALL (Distribution[Date]), 
     Distribution[Date] <= Calendar[Date] 
    ) 
) 

ERROR: 
The value for column 'Date' in table 'Distribution' 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.  

Это может быть ошибка защиты фильтра с использованием HASONEVAUE. Я не уверен.

Среди других идей я пробовал переписывать фильтр, но это тоже не работает.

FILTER (
    Distribution, 
    Distribution[Date] <= 
     CALCULATE (
      MAX(Distribution[Date]), 
      Distribution[Date]<=Calendar[Date] 
     ) 
) 

Error: 
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. 

Этот код получает DistibutionDate последней точки данных в переменном Календаре [Date], но я не могу понять, как включить его.

Last Ever Dist Date:=  
CALCULATE ( 
    LASTDATE(Distribution[DATE]), 
    DATESBETWEEN(
     Calendar[date], 
     BLANK(), 
     LASTDATE(Calendar[Date]) 
    ), 
    ALL(Calendar) 
) 

ответ

0

Как насчет:

Count of audited product/store distribution points:= 
CALCULATE(
    DISTINCTCOUNT(Distribution[ProductStoreKey]), 
    DATESBETWEEN(
     Calendar[date], 
     BLANK(), 
     LASTDATE(Calendar[Date]) 
    ), 
    ALL(Calendar) 
) 
+0

спасибо Грег. Еще одна вещь – daniel

+0

Вы рок. Большое спасибо Грегу. Еще одна вещь. Он передает данные в 2016 и 2017 годах до конца календарной таблицы. Не могли бы вы добавить дополнительный фильтр, чтобы он остановился на СЕГОДНЯ(). Другой DATESBETWEEN? – daniel

+0

@ daniel, это было бы моей первой мыслью тоже. Добавьте еще один DATESBETWEEN, указав диапазон BLANK() на TODAY(). Посмотрите, работает ли это. – GregGalloway

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