EVALUATEANDLOG
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Возвращает значение первого аргумента и регистрирует его в событии профилировщика журнала оценки DAX. Эта функция полностью функциональна только в Power BI Desktop. Она выступает в качестве простой сквозной функции в других средах.
Синтаксис
EVALUATEANDLOG(<Value>, [Label], [MaxRows])
Параметры
Термин | Определение |
---|---|
Значение | Любое скалярное выражение или табличное выражение для вычисления и ведения журнала. |
Этикетка | (Необязательно) Константная строка, включенная как в текст JSON, так и столбец Label события журнала оценки DAX, который можно использовать для легкого определения экземпляра вызова функции. |
MaxRows | (Необязательно) Максимальное количество строк в тексте json события журнала оценки DAX, когда первый аргумент является табличным выражением. Значение по умолчанию — 10. |
Возвращаемое значение
Значение первого аргумента.
Структура JSON, зарегистрированная в событии профилировщика журнала оценки DAX, включает:
- Выражение — это текстовая версия первого аргумента.
- "label" — это параметр Label при указании в выражении.
- "входные данные" — это список столбцов в контексте оценки, который влияет на значения первого аргумента.
- "выходные данные" — это список одного столбца [значение], когда первый аргумент является скалярным выражением и списком выходных столбцов, когда первый аргумент является табличным выражением.
- "data" — это список входных значений и выходных значений, когда первый аргумент является скалярным выражением, а также список входных значений и соответствующих выходных строк, когда первый аргумент является табличным выражением.
- "rowCount" — это количество строк, когда первый аргумент является табличным выражением. Несмотря на то, что количество строк в выходных данных JSON усечено параметром MaxRows, rowCount — это реальное количество строк без усечения.
Замечания
События трассировки можно записать с помощью SQL Server Profiler и средства вывода отладки DAX с открытым исходным кодом.
Эта функция может использоваться практически с любым вложенным выражением в выражении DAX, и все выражение по-прежнему будет допустимым.
Когда первый аргумент вычисляется несколько раз в одном запросе, функция создает одно событие журнала оценки DAX, содержащее входные значения и соответствующие выходные значения.
Если указан параметр метки, его значение возвращается как в выходных данных JSON, так и в столбце Label события журнала оценки DAX.
Если первым аргументом является табличное выражение, в событии журнала оценки DAX отображаются только первые строки MaxRows.
В некоторых случаях эта функция не выполняется из-за оптимизации.
Если событие журнала оценки DAX больше одного миллиона символов, оно усечено для сохранения правильной структуры JSON.
Пример 1
Следующий запрос DAX:
evaluate
SUMMARIZE(
EVALUATEANDLOG(FILTER(Sales, [ProductKey] = 528)),
Sales[SalesTerritoryKey],
"sum",
sum(Sales[Sales Amount])
)
Возвращает следующее событие журнала оценки DAX:
{
"expression": "FILTER(Sales, [ProductKey] = 528)",
"inputs": [],
"outputs": ["'Sales'[SalesOrderLineKey]", "'Sales'[ResellerKey]", "'Sales'[CustomerKey]", "'Sales'[ProductKey]", "'Sales'[OrderDateKey]", "'Sales'[DueDateKey]", "'Sales'[ShipDateKey]", "'Sales'[SalesTerritoryKey]", "'Sales'[Order Quantity]", "'Sales'[Unit Price]", "'Sales'[Extended Amount]", "'Sales'[Product Standard Cost]", "'Sales'[Total Product Cost]", "'Sales'[Sales Amount]", "'Sales'[Unit Price Discount Pct]"],
"data": [
{
"input": [],
"rowCount": 3095,
"output": [
[52174001, -1, 23785, 528, 20190707, 20190717, 20190714, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[52173001, -1, 26278, 528, 20190707, 20190717, 20190714, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[52082001, -1, 23831, 528, 20190705, 20190715, 20190712, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[52054002, -1, 11207, 528, 20190704, 20190714, 20190711, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[52036001, -1, 25337, 528, 20190704, 20190714, 20190711, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[51939002, -1, 23670, 528, 20190702, 20190712, 20190709, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[51911002, -1, 11746, 528, 20190701, 20190711, 20190708, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[51379003, -1, 13745, 528, 20190612, 20190622, 20190619, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[51264002, -1, 11282, 528, 20190605, 20190615, 20190612, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0],
[51184003, -1, 11263, 528, 20190531, 20190610, 20190607, 1, 1, 4.99, 4.99, 1.8663, 1.8663, 4.99, 0.0]
]
}
]
}
Пример 2
Следующий запрос DAX с скалярным аргументом и различными атрибутами:
evaluate
SELECTCOLUMNS(
TOPN(5, Customer),
[Customer],
"Customer",
EVALUATEANDLOG([Customer] & ", " & [Country-Region], "customerLog")
)
Возвращает следующее событие журнала оценки DAX:
{
"expression": "[Customer] & \", \" & [Country-Region]",
"label": "customerLog",
"inputs": ["'Customer'[Customer]", "'Customer'[Country-Region]"],
"data": [
{
"input": ["Russell Xie", "United States"],
"output": "Russell Xie, United States"
},
{
"input": ["Savannah Baker", "United States"],
"output": "Savannah Baker, United States"
},
{
"input": ["Maurice Tang", "United States"],
"output": "Maurice Tang, United States"
},
{
"input": ["Emily Wood", "United States"],
"output": "Emily Wood, United States"
},
{
"input": ["Meghan Hernandez", "United States"],
"output": "Meghan Hernandez, United States"
}
]
}