Сила ConcatenateX
Функция ConcatenateX - склеивает строки таблицы в единое значение. Просто, но очень полезно.
CONCATENATEX(<table>, <expression> [, <delimiter> [, <orderBy_expression> [, <order>]]...] )
- Таблица
- Выражение для склейки. Будет вычислено на каждую строку таблицы.
- Разделитель между полученными значениями выражения. Необязательно
- Поле для сортировки. Необязательно
- Направление сортировки. Необязательно
Часто использую в работе в следующих случаях:
- В таблицу с продуктами вывести менеджера с наилучшими продажами
- В таблицу по категориям продуктов вывести топ 3 продукта с наилучшими продажами
Здесь на каждую категорию нужно получить топ 3 продукта с наилучшими результатами, и вывести их единой строкой.
В переменной top3 получили топ-3 продукта с наибольшим количеством продаж. Ровно 3 строки, поэтому используется сортировка и по имени продукта. Для исключения продуктов с одинаковыми продажами.
В concatenateX передана таблица топ 3. Разделитель - перенос строки - UNICHAR(10). Добавлена и сортировка. Продукт с наилучшими результатами будет расположен первым.
Сам по себе список продуктов не имеет смысла, без вывода его доли и значений продаж в сравнении с другими. Поэтому добавим расчетов.
Здесь вычисляются те же топ 3 продукта, но выводится по ним количество продаж. Чтобы отличить продукты с наибольшим количеством продаж, пририсуем кубиков ▰.
Использую для вывода промежуточных результатов меры, чтобы понять контекст фильтров.
Например, мы хотим получить сумму по топ 3 города. Написали меру:
Допустим мы не хотели, чтобы страны фильтровали наши топ 3 города. Нас интересует сумма топ 3 города в мире. Проверяем список городов топ 3, что выдает текущая мера:
В каждой стране свои топ 3 города. Нужно, чтобы мера в каждой стране возвращала результат как в столбце Всего. Колдуем над контекстами, проверяем содержимое.
Ура, можно посчитать сумму:) Топ 3 города рассчитаны верно.
Также для такой проверки использую Dax Studio. Но там нужна пред подготовка запроса для повтора контекстов отчета. Этот метод требует большего понимания контекстов и языка Dax.
Есть необходимость отобразить выбор пользователя в срезе? ConcantenateX в помощь.
ConcantenateX - мощный инструмент, особенно нужный для изучения и понимания контекстов.