Вычисляемые столбцы

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

Преимущества

Формулы в вычисляемых столбцах очень похожи на формулы, применяемые в Excel. Однако в отличие от Excel невозможно создать разные формулы для разных строк таблицы, вместо этого формула DAX автоматически применяется ко всему столбцу.

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

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

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

В этом примере демонстрируется простая формула в вычисляемом столбце:

=EOMONTH([StartDate],0])  
  

Эта формула извлекает месяц из столбца StartDate. Затем для каждой строки в таблице вычисляется значение конца месяца. Второй параметр задает число месяцев до или после месяца в дате StartDate. В этом случае 0 означает тот же самый месяц. Например, если столбец StartDate имеет 6/1/2001, то значение в вычисляемом столбце будет также 6/30/2001.

Naming a calculated column

По умолчанию новый вычисляемый столбец добавляется справа от других столбцов в таблице, и столбцу автоматически присваивается имя по умолчанию: CalculatedColumn1, CalculatedColumn2и т. д. Чтобы создать новый столбец между двумя существующими, можно также щелкнуть столбец правой кнопкой мыши и выбрать команду «Вставить столбец». Столбцы в одной таблице можно переупорядочить перетаскиванием, а также переименовать после создания, однако необходимо учитывать следующие ограничения на внесение изменений в вычисляемые столбцы.

  • Имя каждого столбца должно быть уникальным в пределах таблицы.

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

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

  • Некоторые символы нельзя использовать в именах столбцов. Дополнительные сведения см. в статье "Требования к именованию" справочника по синтаксису DAX.

Performance of calculated columns

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

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

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

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

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

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

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

Создание вычисляемого столбца

См. также раздел

Таблицы и столбцы
Меры