Дополнительные сведения о контексте строк
Теперь, когда вы создали вычисляемые столбцы, можно узнать, как оцениваются их формулы.
Формула для вычисляемого столбца вычисляется для каждой строки таблицы. Более того, она вычисляется в контексте строки, то есть в текущей строке. Рассмотрим определение вычисляемого столбца Due Fiscal Year:
Due Fiscal Year =
"FY"
& YEAR('Due Date'[Due Date])
+ IF(
MONTH('Due Date'[Due Date]) <= 6,
1
)
При вычислении формулы для каждой строки ссылка на столбец 'Due Date'[Due Date]
возвращает значение столбца для этой строки. Вы обнаружите, что в Microsoft Excel применяется та же концепция для работы с формулами в таблицах Excel.
Однако контекст строки не выходит за пределы таблицы. Если формула должна ссылаться на столбцы в других таблицах, существует два варианта:
- Если таблицы связаны прямо или косвенно, можно использовать функции DAX
RELATED
илиRELATEDTABLE
. ФункцияRELATED
получает значение односторонней связи, аRELATEDTABLE
— значения многосторонней связи. ФункцияRELATEDTABLE
возвращает объект таблицы. - Если таблицы не связаны, можно использовать функцию DAX
LOOKUPVALUE
.
При возможности старайтесь использовать функцию RELATED
. Обычно она работает лучше, чем функция LOOKUPVALUE
, из-за способа хранения и индексирования данных связей и столбцов.
Теперь добавьте следующее определение вычисляемого столбца в таблицу Sales:
Discount Amount =
(
Sales[Order Quantity]
* RELATED('Product'[List Price])
) - Sales[Sales Amount]
Определение вычисляемого столбца добавляет столбец Discount Amount в таблицу Sales. Power BI вычисляет формулу вычисляемого столбца для каждой строки таблицы Sales. Значения столбцов Order Quantity и Sales Amount извлекаются в контексте строки. Однако, так как столбец List Price принадлежит таблице Product, необходимо использовать функцию RELATED
для получения значения цены по прейскуранту продаваемого продукта.
Контекст строки используется при вычислении формул вычисляемых столбцов. Он также используется при использовании класса функций, известных как функции итератора. Функции итератора обеспечивают гибкость при создании сложных сводных данных. Функции итератора описаны в последующем модуле.