DAX - Подсчет отдельных строк, сгруппированных - PullRequest
0 голосов
/ 28 ноября 2018

Я в некотором роде новичок в DAX, поэтому я не уверен, возможно ли то, что я хочу сделать.

  • Мне нужно подсчитать строки из аналитической модели (с некоторыми отфильтрованными данными),Эти строки являются счетами.
  • В моей аналитической модели есть несколько строк для одного и того же счета-фактуры для каждого движения, которое имеет счет-фактура.
  • Эта модель уже имеет показатель, который суммирует значения всех движений.Это простая мера INVOICED_DETAIL:=SUM('Invoicing Detail'[QTY]).

Используемый мной сейчас DAX-запрос выглядит следующим образом:

EVALUATE 
SUMMARIZECOLUMNS (
// Generic filter
FILTER ('Business Unit', 'Business Unit'[Center] = "Alabama" ),

"Count", CALCULATE (
    DISTINCTCOUNT ( 'Invoicing Detail'[Reference] ),
    // Specific filters, usually parameters
    'Time'[Month] = VALUE ("200808"),
    'Product Family'[Product Family] <> VALUE ("OTHERS")
    )
)

Этот запрос DAX возвращает 15000 строк (на самом деле ), он возвращает один столбец с этим значением, это нормально ).Но когда я просматриваю Модель через таблицу PowerPivot в Excel с точно такими же фильтрами, я получаю 14000 строк.Почему эта разница?Я предполагаю, что это потому, что несколько счетов имеют скидки .У меня есть счет A123 3 раза:

Reference|QTY
---------+-----
A123     |1000
A123     |300
A123     |-300
B123     |400
B123     |200
C123     |500

Один с QTY 1000, второй с QTY 300 и третий с QTY (-300) скидка .Конечно, мера INVOICED_DETAIL возвращает правильное значение 1000. Но когда мне нужно считать счетов-фактур, этот тип строк не учитывается. Он не учитывает строки с 300и -300 они отменяют друг друга.Он рассчитывает один счет, когда я ожидаю, что он подсчитает три , несмотря на значение, возвращаемое мерой.И мне нужно, чтобы мой запрос возвратил это значение 14000 .

Если мои предположения верны, мне понадобится дополнительный фильтр на моем CALCULATE, аналогично

"Count", CALCULATE (
    DISTINCTCOUNT ( 'Invoicing Detail'[Reference] ),
    'Time'[Month] = VALUE ("200808"),
    'Product Family'[Product Family] <> VALUE ("OTHERS"),
    // New Filter needed
    INVOICED_DETAIL <> 0
    )

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

Я также склонен думать, что мне нужно предложение о группировке в моем заявлении, которое группирует мои счета, что-то вроде

EVALUATE 
SUMMARIZECOLUMNS (
FILTER ('Business Unit', 'Business Unit'[Center] = "Alabama" ),
// grouping clause
GROUPBY('Invoicing Detail', 'Invoicing Detail'[Reference]),

Но я сделал исследование Google и предложение GROUPBY в DAXотличается ли это от того, что я использовал бы его в SQL (или, может быть, я не очень хорошо это знаю ... это большая вероятность)

Каков будет правильный способ решения этой проблемы?У кого-нибудь есть идея, как туда добраться?Я очень большой поклонник блога Марко Руссо, но не могу найти точно такую ​​же ситуацию, которая у меня сейчас (вероятно, потому что я новичок в DAX)

Заранее спасибо!

Люк .-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...