Инструмент анализа больших данных Power BI (6): простое использование выражений DAX
Инструмент анализа больших данных Power BI (6): простое использование выражений DAX

Выражение DAX

Выражения анализа данных (DAX) Язык представляет собой язык формул, данные Analysis Expressions Выражения анализа данных,аббревиатура Выражение DAX, который позволяет пользователям определять собственные вычисления. ДАКС содержит некоторое количество в Excel Функции, используемые в формулах, в дополнение к другим функциям, предназначенным для обработки реляционных данных и выполнения динамического агрегирования.

DAX Формула и Excel Формула очень похожа на создание DAX чиновник,Пожалуйста, введите знак равенства,за которым следует имя функции или выражение и любые необходимые значения или параметры,DAX поддерживает четыре распространенных оператора: арифметические операторы (+, -, *, /, ^), оператор сравнения (=、>、<、<=、>=、<>)、Литеральные операторы(&)、Логические операторы(&&、||)。

В дополнение к вышеуказанным операторам DAX предоставляет множество функций, подобных Excel, которые можно использовать для обработки строк, выполнения вычислений с использованием дат и времени или создания условных значений, например функция суммирования SUM, которая имеет очень большой размер. объем данных более 200, но есть несколько типов часто используемых функций: функции даты и времени, функции разведки времени и статистические функции. Мы изучим их одну за другой позже.

Формат Выражения DAX следующий:

Язык кода:javascript
копировать
Продажи =СУММ(Таблица 1[Столбец 1])

То есть: все формулы должны ссылаться на имя таблицы, сначала укажите имя таблицы, а затем имя столбца.

1. Создайте значения измерений

Значение измерения получено путем Высвечивания Значение виртуальных данных, созданное DAX, которое не меняет исходные данные или модель данных, У власти BIЗначения измерений на графике позволяют быстро и легко подсчитать некоторые нужные нам показатели.。

Создать новую меру можно тремя способами: Создайте новую меру в представлении «Модель».、"Отчет"Новые меры в представлении и в"Поле"Щелкните область правой кнопкой мыши, чтобы создать новое значение меры.,Вновь созданные значения измерений из трех одинаковы.,Это показывает важность вновь созданного значения метрики.

Вы можете создать новые значения измерений с помощью трех вышеуказанных методов. Затем выберите таблицу информации о магазине в «Модели» и нажмите «Новое значение измерения».

Во всплывающем интерфейсе введите: общий оборот = СУММА (ежемесячный оборот «информации о магазине»). Приведенная выше формула представляет собой формулу DAX. После написания нажмите Enter или нажмите «√» впереди, чтобы завершить редактирование. можно ввести соответствующее " в поле. Вы можете увидеть новый показатель "Общий объем продаж" в таблице "Информация о магазине". Это поле не будет отображаться в таблице, а представляет собой всего лишь столбец виртуального индикатора.

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

  • Статистика товарооборота в каждом городе

Статистика товарооборота в каждой провинции

Статистика общего товарооборота каждого района и округа

С помощью вышеуказанных операций мы видим, что нам нужно оперировать только соответствующим значением строки, и соответствующий общий оборот может быть рассчитан автоматически, что очень удобно. Кроме того, если мы настроим «шардер» в Power BI, соответствующее значение измерения «общего оборота» также будет меняться в зависимости от различных настроек среза.

2. Быстрое измерение значения

Значение быстрой меры эквивалентно упрощенной версии значения меры. Нет необходимости писать формулу DAX для значения меры. Оно предоставляет нам несколько простых операций. Это не рекомендуется использовать. новые значения меры чаще. Ниже демонстрируется работа быстрых метрик.

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

Видно, что созданное выше «Значение быстрого измерения» по умолчанию создается в первой таблице «Информация о округе и округе». Если вы не хотите создавать его в этой таблице, вы можете щелкнуть правой кнопкой мыши соответствующую таблицу и. выберите «Новое значение быстрого измерения», чтобы завершить его, как показано выше. Как показано на рисунке.

Далее мы можем создать визуализацию «карточной диаграммы» для отображения средней арендной платы, соответствующей категории делового района. Операция выглядит следующим образом:

Среднее значение, показанное на рисунке выше, содержит миллионы единиц. Мы также можем удалить единицы или изменить их на другие. Операция выглядит следующим образом:

Конечный эффект следующий:

Обратите внимание, что приведенные выше результаты показывают среднюю арендную плату для 11 типов деловых районов. Вы также можете выбрать различные типы деловых районов, чтобы просмотреть среднюю стоимость каждого делового района, которая также является общей стоимостью каждого делового района.

3. Создайте новый столбец.

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

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

Сначала откройте представление «Диаграмма», выберите соответствующую «Таблицу информации о магазине» и убедитесь, что ежемесячный диапазон оборота составляет 80 000–250 000.

Операция «Новый столбец», установите формулу DAX для настройки сегмента доходов: Сегмент доходов = IF('хранить информацию'лунаоборот<150000,«низкий доход»,IF('хранить информацию'лунаоборот<200000,«Средний доход»,"высокий доход"))

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

4. Создайте новую таблицу.

Создание новой таблицы в DAX аналогично созданию нового столбца.,Он также использует существующие таблицы данных для создания необходимых таблиц с помощью Выражение DAX. Общие новые таблицы включают создание таблиц измерений, создание таблиц перекрестных объединений и создание таблиц вертикального слияния.,Давайте объясним их один за другим ниже.

1. Создайте таблицу измерений.

Обычно таблицы измерений импортируются в Power BI из внешних данных. В некоторых случаях мы также можем извлечь данные измерений на основе существующей таблицы фактов, чтобы сформировать таблицу измерений, то есть выполнить дедупликацию данных в определенном столбце таблицы и сохранить их. извлеченные данные в таблицу. Таблицы образуют размерные данные. Например, в «Таблице информации о магазине» мы можем наблюдать, что каждая часть данных соответствует типу магазина. Затем мы можем выполнить обработку дедупликации в столбце типа магазина, чтобы получить данные измерения типа магазина для формирования таблицы измерений.

Вышеупомянутая дедупликация и извлечение данных для столбца таблицы фактов для формирования таблицы измерений могут быть достигнуты с помощью формулы DAX. Существует два метода: VALUES() и DISTINCT().

  • VALUES()Использование функции следующее:

VALUES (столбец таблицы): возвращает новую таблицу с уникальными значениями для этого столбца.

ЗНАЧЕНИЯ (таблица): скопируйте исходную таблицу.

  • DISTINCT()Использование функции следующее:

DISTINCT (столбец таблицы): возвращает новую таблицу, содержащую уникальное значение этого столбца, соответствующее использованию VALUES (столбец таблицы).

DISTINCT(таблица): возвращает новую таблицу с уникальными строками.

DISTINCT (выражение таблицы): выражение для таблицы возвращает новую таблицу с уникальными строками в таблице.

Вышеупомянутые выражения VALUES() и DISTINCT() имеют свои собственные применения. DISTINCT() может не только получать уникальное значение столбца для формирования новой таблицы, но также может выполнять дедупликацию данных в таблице для получения новой таблицы. Поэтому DISTINCT() во многих случаях относительно прост в использовании.

Требование: Извлечь размерные данные для типа магазина в таблице «Информация о магазине». Конкретные операции заключаются в следующем:

Нажмите «Новая таблица» и введите Выражение. DAX: таблица типов магазинов = DISTINCT (тип магазина «информация о магазине»), а именно:

Для этого вы также можете использовать функцию VALUES(). Также выберите «Новая таблица» и введите выражение: Таблица типов магазинов 2 = VALUES (тип магазина «информация о магазине»).

Результаты, полученные с использованием приведенных выше функциональных выражений VALUES и DISTINCT, одинаковы.

2. Создайте таблицу перекрестных объединений.

Таблица перекрестных соединений сопоставляет одни и те же поля в двух таблицах и объединяет их по горизонтали. Чтобы реализовать таблицу перекрестных соединений, вам необходимо использовать функцию NATURALINNERJOIN(). Функция используется следующим образом.

Язык кода:javascript
копировать
NATURALINNERJOIN(LeftTable,RightTable)

Вышеупомянутая левая и правая таблица должны иметь одинаковые связанные столбцы, и установлена ​​связь модели. Функция NATURALINNERJOIN вернет новую таблицу, состоящую из всех столбцов и полей двух таблиц, в противном случае произойдет ошибка.

Требование: Создайте перекрестную таблицу для таблицы «Информация о магазине» и таблицы «Информация о округе и округе». Ранее мы установили модельную связь для двух таблиц:

Таким образом, вы можете напрямую построить таблицу перекрестных объединений. После «Новой таблицы» вы можете ввести Выражение. DAX: таблица перекрестных объединений = NATURALINNERJOIN('Информация о магазине',VALUES('Информация о округе и округе'Название округа и округа))

Примечание. При использовании NATURALINNERJOIN в таблице не допускаются те же столбцы, что и в левой таблице.,Итак, здесь мы используем ЗНАЧЕНИЯ («информация о округе и округе», название округа и округа), чтобы отфильтровать соответствующие столбцы. NATURALINNERJOIN также можно вкладывать, чтобы получить больше столбцов данных в других таблицах.,Например, мы можем связать этот результат с"информация о городе"Воляинформация о городе Также показано в Cross Unitedповерхностьсередина,Выражение DAX выглядит следующим образом:

3. Создайте таблицу вертикального слияния

Чтобы сформировать таблицу вертикального слияния между двумя таблицами, необходимо добавить одну таблицу к другой таблице, что аналогично эффекту добавления таблиц в Power Query. Мы можем использовать функцию UNION для вертикального слияния нескольких таблиц, но эти таблицы должны иметь одинаковую структуру столбцов, иначе дополнительное слияние будет невозможно или данные после слияния будут отсутствовать.

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

Затем создайте таблицу вертикального слияния с помощью формулы UNION DAX. Формула выглядит следующим образом: Таблица заказов по требованию на 2022 год = UNION («Таблица заказов по требованию за первый квартал», «Таблица заказов по требованию за второй квартал», «Третий квартал». таблица заказов по требованию», «Бланк заказа по требованию на четвертый квартал»)

5. Создайте таблицу дат.

В Power BI мы часто используем функции времени для выполнения операций преобразования времени в таблицах данных, содержащих столбцы дат, для дальнейшего анализа. Здесь мы создаем таблицу дат с помощью Power BI, чтобы продемонстрировать использование функций даты.

В Power BI есть две распространенные функции для создания таблиц дат: CALENDAR и ADDCOLUMNS. Они представлены ниже.

1. Создайте таблицу дат с помощью функции КАЛЕНДАРЬ.

Создать таблицу дат можно с помощью функции КАЛЕНДАРЬ. Ее использование происходит следующим образом:

Язык кода:javascript
копировать
CALENDAR(StartDate,EndData)

Функция КАЛЕНДАРЬ может создать таблицу данных с последовательными датами, указав дату начала и дату окончания. Введите следующую формулу DAX в «Новую таблицу» в Power BI: Тестовая таблица даты = CALENDAR(DATE(2022,01,01),DATE(2022,12,31)) для создания таблицы дат:

После создания приведенной выше таблицы дат,Мы можем «создать новый столбец» и использовать функцию DAX для извлечения года, месяца, дня и другой информации из столбца даты на основе текущего столбца.,Операция заключается в следующем,Создайте новый столбец и укажите Выражение DAX это: год = YEAR(DATE)

Описанным выше способом мы создаем столбцы несколько раз и вводим Выражение. DAX: месяц = МЕСЯЦ(ДАТА),дата = ДЕНЬ(ДАТА), следующим образом:

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

2. Создайте таблицу дат с помощью функции ADDCOLUMNS.

Функция ADDCOLUMNS используется для добавления столбцов в указанную таблицу и возврата таблицы с новыми столбцами. Ее использование выглядит следующим образом:

Язык кода:javascript
копировать
ADDCOLUMNS(таблица,"имя1",«Выражение1»,«Имя 2»,«Выражение 2»...)

В приведенной выше таблице указано, в какую таблицу добавлять столбцы.,Последующее имя 1 — это имя добавляемого столбца.,Следующее выражение предназначено для получения Выражения DAX, соответствующего значению столбца.,Если новых столбцов несколько, напишите несколько имен и выражений по аналогии.

Требования: Создайте расписание, включая год, месяц, дату, квартал, неделю, год, месяц, год и все поля столбца даты. Создайте новую таблицу и введите формулу DAX следующим образом. :

Язык кода:javascript
копировать
таблица дат 2 = ADDCOLUMNS(
    CALENDAR(DATE(2022,01,01),DATE(2022,12,31)),
    "Год",ГОД([Дата]),
    «Месяц», МЕСЯЦ([Дата]),
    "Дата",ДЕНЬ([Дата]),
    "Квартал",КВАРТАЛ([Дата]),
    "Неделя",FORMAT([Дата],"ААА"),«Понедельник 2»,"неделя"&WEEKDAY([Date],2),
    "Год Квартал", FORMAT([Дата],"Квартал"),
    «Год/Месяц», FORMAT([Дата], «ГГГГ-ММ»),«годовая неделя»,FORMAT([Date],"YYYY")&"год"&WEEKNUM([Date],2)&"неделя",
    «Полная дата», FORMAT([Дата], «Длинная Date")
    )

Вышеупомянутое прошло"&"Символы могут соединять несколько результатов;FORMATэто функция форматирования,У власти В BI существует множество форматов FORMAT. Вы можете обратиться к рисунку ниже и использовать их в соответствии с реальной ситуацией.

3. Создайте динамическую таблицу дат.

Чтобы получить приведенную выше таблицу данных даты, мы сами сгенерировали данные для импорта в Power. Для таблиц данных, содержащих поля даты в BI, мы также можем использовать приведенное выше Выражение. DAX используется для создания соответствующих данных столбца дат. Это динамическая таблица дат, созданная для пользовательских данных.

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

Язык кода:javascript
копировать
динамическая таблица дат = ADDCOLUMNS(
    CALENDAR(FIRSTDATE('2022по механизм Форма заказа'[Дата потребления]),LASTDATE('2022по контейнер Форма заказа'[Дата потребления])),
    "Год",ГОД([Дата]),
    «Месяц», МЕСЯЦ([Дата]),
    "Дата",ДЕНЬ([Дата]),
    "Квартал",КВАРТАЛ([Дата]),
    "Неделя",FORMAT([Дата],"ААА"),
    "Год Квартал", FORMAT([Дата],"Квартал"),
    «Год/Месяц», FORMAT([Дата], «ГГГГ-ММ»),«годовая неделя»,FORMAT([Date],"YYYY")&"год"&WEEKNUM([Date],2)&"неделя",
    «Полная дата», FORMAT([Дата], «Длинная Date")
    )

Примечание. Разница между приведенными выше данными о дате создания и предыдущими данными о дате создания заключается в том, что дата в динамической таблице дат получается из пользовательской таблицы. Метод записи: CALENDAR(FIRSTDATE('2022 Таблица заказов по требованию'). date), LASTDATE('2022 Таблица заказов по требованию 'дата потребления)), FIRSTDATE указывает дату начала, а LASTDATE указывает дату окончания.

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

6. Выражение DAX создает пустую таблицу.

Мы можем использовать функцию SELECTCOLUMNS() для создания новой таблицы на основе определенной таблицы. Функция SELECTCOLUMNS аналогична функции ADDCOLUMNS, но есть различия. ADDCOLUMNS добавляет столбцы в таблицу, а SELECTCOLUMNS создает новые столбцы на основе таблицы. Вместо добавления столбцов на основе исходной таблицы он используется следующим образом:

Язык кода:javascript
копировать
SELECTCOLUMNS(поверхность,"имя1",«Выражение1»,«Имя 2»,«Выражение 2»...)

В приведенной выше таблице показано, из какой таблицы выбирать столбцы.,Name1 — имя нового созданного столбца.,Следующее выражение 1 предназначено для получения Выражения DAX, соответствующего значению столбца.,Если новых столбцов несколько, напишите несколько имен и выражений по аналогии.

При использовании функции SELECTCOLUMNS часто требуется получение данных из других связанных таблиц. Функцию RELATED необходимо использовать для получения данных столбца из большего количества таблиц. Функция RELATED должна передавать имя столбца в качестве параметра, и ее функция заключается в этом. запрашивает таблицу. Содержит значения столбца, возвращает значение этого столбца из других таблиц и требует, чтобы таблица для данных запроса RELATED установила модельную связь с таблицей для данных запроса SELECTCOLUMNS, в противном случае будет сообщено об ошибке.

Требование: отобразить информацию о заказах по требованию, соответствующую каждому магазину, на основе данных «Таблица заказов по требованию 2022» и «Таблица информации о магазине», импортированных в Power BI.

Сначала мы строим модельную связь между двумя таблицами в представлении «Модель»:

Затем нажмите «Создать таблицу» и введите следующую формулу DAX:

Язык кода:javascript
копировать
2022 магазин по информация о заказе компьютера = SELECTCOLUMNS(
    '2022по требованиюформа заказа',"дата продажи",'2022по контейнер Форма заказа'[Дата потребления],«Время потребления»,'2022по утилита Форма заказа'[Время потребления],
    "Потребительский магазин",RELATED('Информация о магазине'[название магазина]),"по требованиюкомбо",'2022по Программа Форма заказа'[Название пакета],«Сумма заказа»,('2022по требованиюформа заказа'[комбоцена]-'2022по Программа Форма заказа'[Сумма скидки])
)

С помощью вышеуказанных операций мы обнаружили, что столбцы даты продажи и времени потребления не имеют нужной структуры. Мы можем дополнительно настроить соответствующий формат времени с помощью «Инструмента столбца». Операция выглядит следующим образом. Откройте «Инструмент столбца» и. выберите соответствующий столбец времени, чтобы отформатировать время.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose