Дополнительные сведения о контексте строк

Завершено

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

Формула для вычисляемого столбца вычисляется для каждой строки таблицы. Более того, она вычисляется в контексте строки, то есть в текущей строке. Рассмотрим определение вычисляемого столбца 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 для получения значения цены по прейскуранту продаваемого продукта.

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