toscalar()
Retourne une valeur de constante scalaire de l’expression évaluée.
Cette fonction est utile pour les requêtes qui nécessitent des calculs intermédiaires. Par exemple, calculez un nombre total d’événements, puis utilisez le résultat pour filtrer les groupes qui dépassent un certain pourcentage de tous les événements.
Deux instructions doivent être séparées par un point-virgule.
Syntax
toscalar(
expression)
Découvrez les conventions de syntaxe.
Paramètres
Nom | Type | Obligatoire | Description |
---|---|---|---|
expression | string |
✔️ | Valeur à convertir en valeur scalaire. |
Retours
Valeur de constante scalaire de l’expression évaluée. Si le résultat est tabulaire, la première colonne et la première ligne sont prises pour la conversion.
Conseil
Vous pouvez utiliser une instruction let pour la lisibilité de la requête lors de l’utilisation de toscalar()
.
Limites
toscalar()
ne peut pas être appliqué sur un scénario qui applique la fonction sur chaque ligne. Cela est dû au fait que la fonction ne peut être calculée qu’un nombre constant de fois pendant l’exécution de la requête.
En règle générale, lorsque cette limitation est atteinte, l’erreur suivante est retournée : can't use '<column name>' as it is defined outside its row-context scope.
Dans l’exemple suivant, la requête échoue avec l’erreur :
'toscalar': can't use 'x' as it is defined outside its row-context scope.
let _dataset1 = datatable(x:long)[1,2,3,4,5];
let _dataset2 = datatable(x:long, y:long) [ 1, 2, 3, 4, 5, 6];
let tg = (x_: long)
{
toscalar(_dataset2| where x == x_ | project y);
};
_dataset1
| extend y = tg(x)
Cet échec peut être atténué à l’aide de l’opérateur join
, comme dans l’exemple suivant :
let _dataset1 = datatable(x: long)[1, 2, 3, 4, 5];
let _dataset2 = datatable(x: long, y: long) [1, 2, 3, 4, 5, 6];
_dataset1
| join (_dataset2) on x
| project x, y
Sortie
x | y |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Exemples
Évaluez Start
, End
et Step
en tant que constantes scalaires, puis utilisez le résultat pour range
l’évaluation.
let Start = toscalar(print x=1);
let End = toscalar(range x from 1 to 9 step 1 | count);
let Step = toscalar(2);
range z from Start to End step Step | extend start=Start, end=End, step=Step
Sortie
z | start | end | étape |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
L’exemple suivant montre comment toscalar
peut être utilisé pour « corriger » une expression afin qu’elle soit calculée avec précision une seule fois. Dans ce cas, l’expression en cours de calcul retourne une valeur différente par évaluation.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Sortie
x | y |
---|---|
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c2937642-0d30-4b98-a157-a6706e217620 |
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5 |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour