Я в некотором роде новичок в 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)
Заранее спасибо!
Люк .-