Использование TREATAS для измерения из другой таблицы - PullRequest
1 голос
/ 06 мая 2020

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

Я попробовал обе меры, указанные ниже, но они оба возвращают общий счетчик для каждой строки, а не по продуктам. Любая помощь будет принята с благодарностью!

NumProductsfromSales1 = calculate([Count], treatas(values('Sales'[Product]), 'Inventory'[Product]))

NumProductsfromSales2 = 
var lineage = treatas(values('Sales'[Product]), 'Inventory'[Product])
var tbl = calculatetable('Inventory Detail', KEEPFILTERS(lineage))
var result = calculate(sumx(tbl, [Count]))
return  result

1 Ответ

0 голосов
/ 06 мая 2020

Из этого источника , мы видим, что TREATAS работает следующим образом.

[Filtered Measure] :=
CALCULATE (
    <target_measure>,
    TREATAS (
        VALUES ( <lookup_granularity_column> ),
        <target_granularity_column>
    )
)

эквивалентно

[Filtered Measure] :=
CALCULATE (
    <target_measure>,
    INTERSECT (
        ALL ( <target_granularity_column> ),
        VALUES ( <lookup_granularity_column> )
    )
)

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


Я не уверен, что это наиболее эффективное решение, но я думаю, что если вы добавите Inventory в качестве фильтра table к вашей первой попытке, он должен поддерживать контекст фильтра в этой таблице из строки в визуальном элементе.

NumProductsfromSales1 =
CALCULATE (
    [Count],
    'Inventory',
    TREATAS ( VALUES ( 'Sales'[Product] ), 'Inventory'[Product] )
)

Изменить: Что касается вашего комментария, попробуйте следующее:

a =
VAR top5prod =
    SELECTCOLUMNS (
        TOPN (
            5,
            SUMMARIZE ( Sales, Sales[Product], "Count", [Product Count] ),
            [Count]
        ),
        "Product", Sales[Product]
    )
RETURN
    CALCULATE (
        [Product Count],
        FILTER ( 'Inventory', 'Inventory'[Product] IN top5prod )
    )

Использование FILTER не так эффективно, как TREATAS, но посмотрите, работает ли оно.

Очень сложно ответить на такой вопрос, не имея ничего воспроизводимого, с которым можно работать .

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