EVALUATEANDLOG
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
Zwraca wartość pierwszego argumentu i rejestruje go w zdarzeniu profilera dziennika oceny języka DAX. Ta funkcja jest w pełni funkcjonalna tylko w programie Power BI Desktop. Działa jako prosta funkcja przekazywania w innych środowiskach.
Składnia
EVALUATEANDLOG(<Value>, [Label], [MaxRows])
Parametry
Termin | Definicja |
---|---|
Wartość | Dowolne wyrażenie skalarne lub wyrażenie tabeli do obliczenia i zarejestrowania. |
Etykieta | (Opcjonalnie) Ciąg stały zawarty zarówno w tekście json, jak i w kolumnie Etykieta zdarzenia dziennika oceny języka DAX, którego można użyć do łatwego identyfikowania wystąpienia wywołania funkcji. |
MaxRows | (Opcjonalnie) Maksymalna liczba wierszy w tekście json zdarzenia dziennika oceny języka DAX, gdy pierwszy argument jest wyrażeniem tabeli. Wartość domyślna to 10. |
Wartość zwracana
Wartość pierwszego argumentu.
Struktura JSON zarejestrowana w zdarzeniu profilera dziennika oceny języka DAX obejmuje:
- Wyrażenie to wersja tekstowa pierwszego argumentu.
- "label" jest parametrem Label, gdy zostanie określony w wyrażeniu.
- "dane wejściowe" to lista kolumn w kontekście oceny, która ma wpływ na wartości pierwszego argumentu.
- "outputs" to lista pojedynczej kolumny [Value], gdy pierwszy argument jest wyrażeniem skalarnym i listą kolumn wyjściowych, gdy pierwszy argument jest wyrażeniem tabeli.
- "dane" to lista wartości wejściowych i wartości wyjściowych, gdy pierwszy argument jest wyrażeniem skalarnym, a lista wartości wejściowych i odpowiadających im wierszy wyjściowych, gdy pierwszy argument jest wyrażeniem tabeli.
- Wyrażenie "rowCount" to liczba wierszy, gdy pierwszy argument jest wyrażeniem tabeli. Mimo że liczba wierszy w danych wyjściowych json jest obcięta przez parametr MaxRows, rowCount jest rzeczywistą liczbą wierszy bez obcinania.
Uwagi
Zdarzenia śledzenia można przechwycić przy użyciu programu SQL Server Profiler i narzędzia do debugowania języka DAX typu open source.
Tej funkcji można używać z niemal dowolnym wyrażeniem podrzędnym w wyrażeniu języka DAX, a całe wyrażenie będzie nadal prawidłowe.
Gdy pierwszy argument jest obliczany wiele razy w jednym zapytaniu, funkcja generuje pojedyncze zdarzenie dziennika oceny języka DAX, które zawiera zarówno wartości wejściowe, jak i odpowiadające im wartości wyjściowe.
Po określeniu parametru etykiety jego wartość jest zwracana zarówno w danych wyjściowych json, jak i w kolumnie Etykieta zdarzenia dziennika oceny języka DAX.
Jeśli pierwszy argument jest wyrażeniem tabeli, w zdarzeniu dziennika oceny języka DAX są wyświetlane tylko pierwsze wiersze MaxRows.
W niektórych przypadkach ta funkcja nie jest wykonywana z powodu optymalizacji.
Jeśli zdarzenie dziennika oceny języka DAX jest większe niż milion znaków, zostanie obcięte, aby zachować poprawną strukturę json.
Przykład 1
Następujące zapytanie języka DAX:
evaluate
SUMMARIZE(
EVALUATEANDLOG(FILTER(Sales, [ProductKey] = 528)),
Sales[SalesTerritoryKey],
"sum",
sum(Sales[Sales Amount])
)
Zwraca następujące zdarzenie dziennika oceny języka 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]
]
}
]
}
Przykład 2
Następujące zapytanie języka DAX z argumentem skalarnym i różne atrybuty:
evaluate
SELECTCOLUMNS(
TOPN(5, Customer),
[Customer],
"Customer",
EVALUATEANDLOG([Customer] & ", " & [Country-Region], "customerLog")
)
Zwraca następujące zdarzenie dziennika oceny języka 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"
}
]
}