EVALUATEANDLOG
S’applique à :Colonne calculéeTable calculéeMesureCalcul de visuel
Retourne la valeur du premier argument et la journalise dans un événement de profileur de journal d’évaluation DAX. Cette fonction est entièrement fonctionnelle dans Power BI Desktop uniquement. Elle agit comme une fonction directe simple dans d’autres environnements.
Syntaxe
EVALUATEANDLOG(<Value>, [Label], [MaxRows])
Paramètres
Terme | Définition |
---|---|
Valeur | Toute expression scalaire ou expression de table à évaluer et journaliser. |
Étiquette | (Facultatif) Chaîne constante incluse dans le texte json et la colonne Label de l’événement de journal d’évaluation DAX qui peut être utilisée pour identifier facilement une instance de l’appel de fonction. |
MaxRows | (Facultatif) Nombre maximal de lignes dans le texte json de l’événement de journal d’évaluation DAX quand le premier argument est une expression de table. La valeur par défaut est 10. |
Valeur renvoyée
Valeur du premier argument.
La structure JSON journalisée dans un événement de profileur de journal d’évaluation DAX comprend les éléments suivants :
- « expression » est la version textuelle du premier argument.
- « label » est le paramètre Label quand il est spécifié dans l’expression.
- « inputs » est une liste de colonnes dans le contexte d’évaluation qui affecte les valeurs du premier argument.
- « outputs » est une liste d’une seule colonne [Value] quand le premier argument est une expression scalaire et une liste de colonnes de sortie quand le premier argument est une expression de table.
- « data » est une liste de valeurs d’entrée et de valeurs de sortie quand le premier argument est une expression scalaire, et une liste de valeurs d’entrée et de lignes de sortie correspondantes quand le premier argument est une expression de table.
- « rowCount » est le nombre de lignes quand le premier argument est une expression de table. Même si le nombre de lignes dans la sortie json est tronqué par le paramètre MaxRows, rowCount est le nombre réel de lignes sans troncation.
Remarques
Les événements de trace peuvent être capturés avec SQL Server Profiler et de l’outil open source DAX Debug Output.
Cette fonction peut être utilisée avec presque n’importe quelle sous-expression dans une expression DAX, sans que cela affecte la validité de l’ensemble de l’expression.
Quand le premier argument est évalué plusieurs fois dans une requête unique, la fonction génère un seul événement de journal d’évaluation DAX qui contient à la fois les valeurs d’entrée et les valeurs de sortie correspondantes.
Quand le paramètre label est spécifié, sa valeur est retournée dans la sortie json et dans la colonne Label de l’événement de journal d’évaluation DAX.
Si le premier argument est une expression de table, seules les lignes MaxRows supérieures sont affichées dans l’événement de journal d’évaluation DAX.
Dans certains cas, cette fonction n’est pas exécutée en raison d’optimisations.
Si l’événement de journal d’évaluation DAX comprend plus d’un million de caractères, il est tronqué pour conserver la structure json correcte.
Exemple 1
La requête DAX suivante :
evaluate
SUMMARIZE(
EVALUATEANDLOG(FILTER(Sales, [ProductKey] = 528)),
Sales[SalesTerritoryKey],
"sum",
sum(Sales[Sales Amount])
)
Retourne l’événement de journal d’évaluation DAX suivant :
{
"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]
]
}
]
}
Exemple 2
La requête DAX suivante avec un argument scalaire et différents attributs :
evaluate
SELECTCOLUMNS(
TOPN(5, Customer),
[Customer],
"Customer",
EVALUATEANDLOG([Customer] & ", " & [Country-Region], "customerLog")
)
Retourne l’événement de journal d’évaluation DAX suivant :
{
"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"
}
]
}