Найти среднее значение сумм, сгруппированных по измерениям, не включенным в контекст фильтра - PullRequest
0 голосов
/ 14 января 2019

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

Вот пример таблицы продаж и ожидаемых результатов

Таблица продаж

+---------+-----------+-------------+-------+
| PartKey | VendorKey | CustomerKey | Count |
+---------+-----------+-------------+-------+
| 1       | a         | Z           | 10    |
| 1       | b         | Z           | 20    |
| 2       | a         | Y           | 30    |
| 2       | a         | Y           | 40    |
| 2       | b         | Z           | 50    |
+---------+-----------+-------------+-------+

Результаты

  • PartKey 1 - Мин: 10 (а, Z), Макс: 20 (б, Z), Avg: 15
  • PartKey 2 - Мин: 50 (б, Z), Макс: 70 (а, Y => 30 + 40) , Avg: 60

Так что мера, которую я хочу каким-то образом создать, должна получить результаты из данных, сгруппированных по VendorKey, CustomerKey и PartKey (хотя PartKey будет в контексте фильтра), но я не знаю, как указать этот вид группировка.

1 Ответ

0 голосов
/ 14 января 2019

Ключевым моментом здесь является создание сводной таблицы, в которой вы удаляете контекст фильтра, а затем min / max / avg, используя эту таблицу. Приведенная ниже таблица Summary воссоздала отображаемую вами таблицу данных, за исключением того, что две строки 2,a,Y были агрегированы.

AvgSum =
VAR Summary =
    SUMMARIZE (
        ALL(Table1),
        Table1[PartKey],
        Table1[VendorKey],
        Table1[CustomerKey],
        "Cnt", SUM ( Table1[Count] )
    )
RETURN
    AVERAGEX (
        FILTER (
            Summary,
            Table1[PartKey] = MAX ( Table1[PartKey] )
        ),
        [Cnt]
    )

Обратите внимание, что если вы поменяете AVERAGEX выше на MINX или MAXX, вы получите указанные вами минимальные и максимальные значения.

...