March 3

Сила ConcatenateX

Функция ConcatenateX - склеивает строки таблицы в единое значение. Просто, но очень полезно.

Параметры функции:

CONCATENATEX(<table>, <expression>
[, <delimiter> [, <orderBy_expression> [, <order>]]...]
)
  • Таблица
  • Выражение для склейки. Будет вычислено на каждую строку таблицы.
  • Разделитель между полученными значениями выражения. Необязательно
  • Поле для сортировки. Необязательно
  • Направление сортировки. Необязательно

Часто использую в работе в следующих случаях:

  • Вывод топN в матрицу или таблицу
  • Проверка контекста вычисления
  • Вывод выбора в срезе

Вывод TopN в таблицу анализа

Например,

  • В таблицу с продуктами вывести менеджера с наилучшими продажами
  • В таблицу по категориям продуктов вывести топ 3 продукта с наилучшими продажами

Здесь на каждую категорию нужно получить топ 3 продукта с наилучшими результатами, и вывести их единой строкой.

Мера [Top 3 by Quantity]

В переменной top3 получили топ-3 продукта с наибольшим количеством продаж. Ровно 3 строки, поэтому используется сортировка и по имени продукта. Для исключения продуктов с одинаковыми продажами.

В concatenateX передана таблица топ 3. Разделитель - перенос строки - UNICHAR(10). Добавлена и сортировка. Продукт с наилучшими результатами будет расположен первым.

Сам по себе список продуктов не имеет смысла, без вывода его доли и значений продаж в сравнении с другими. Поэтому добавим расчетов.

Здесь вычисляются те же топ 3 продукта, но выводится по ним количество продаж. Чтобы отличить продукты с наибольшим количеством продаж, пририсуем кубиков ▰.

Проверка контекста вычисления

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

Например, мы хотим получить сумму по топ 3 города. Написали меру:

Проверяем результат

Сумма топ 3 города по странам и в тотал

Допустим мы не хотели, чтобы страны фильтровали наши топ 3 города. Нас интересует сумма топ 3 города в мире. Проверяем список городов топ 3, что выдает текущая мера:

В каждой стране свои топ 3 города. Нужно, чтобы мера в каждой стране возвращала результат как в столбце Всего. Колдуем над контекстами, проверяем содержимое.

Ура, можно посчитать сумму:) Топ 3 города рассчитаны верно.

Также для такой проверки использую Dax Studio. Но там нужна пред подготовка запроса для повтора контекстов отчета. Этот метод требует большего понимания контекстов и языка Dax.

Вывод выбора значений среза

Есть необходимость отобразить выбор пользователя в срезе? ConcantenateX в помощь.

ConcantenateX - мощный инструмент, особенно нужный для изучения и понимания контекстов.