Passer la navigation

Recommandations en matière de langage de requête Log Analytics pour les opérateurs Summarize et Join

Date de publication : 29 mai, 2018

Cette mise à jour décrit les recommandations en matière de syntaxe de langage de requête Azure Log Analytics et Application Insights pour les opérateurs Summarize et Join. La syntaxe existante est toujours prise en charge, mais nous vous recommandons de modifier si possible la syntaxe de votre requête dans les recherches et alertes enregistrées, afin d’éviter toute ambiguïté dans les résultats.

Si vous avez des questions sur ces recommandations, contactez-nous.

Quantification automatique horaire dans l’opérateur Summarize

Actuellement, les données agrégées par valeurs date/heure sont automatiquement regroupées en compartiments horaires. Dans cet exemple, la colonne TimeGenerated utilisée dans l’opérateur Summarize est automatiquement arrondie aux compartiments horaires :

SecurityEvent

| where TimeGenerated > ago(1d)

| where EventID == 4625

| summarize count() by TimeGenerated

Voici les résultats de la requête :

TimeGenerated [UTC]

count_

2018-02-04T09:00:00.000

2018-02-04T10:00:00.000

2018-02-04T11:00:00.000

2018-02-04T12:00:00.000

2018-02-04T13:00:00.000

2018-02-04T14:00:00.000

2018-02-04T15:00:00.000

2018-02-04T16:00:00.000

2018-02-04T17:00:00.000

2018-02-04T18:00:00.000

1 205

1 268

1 234

1 173

1 007

1 042

1 041

1 049

1 090

1 113

 

Actions recommandées :

  • Si vous n’utilisez pas la fonctionnalité de quantification automatique, ni dans les recherches enregistrées ni dans les alertes (par exemple, totaliser par TimeGenerated) :
    • Aucune action n’est requise.
  • Si vous ne connaissez pas la fonctionnalité de quantification automatique, vos requêtes peuvent renvoyer des résultats présentant une agrégation horaire imprévue :
    • Vérifiez que vous utilisez l’agrégation de données par valeur date/heure (par exemple, totaliser par TimeGenerated). Le cas échéant, corrigez les requêtes de manière à utiliser la quantification explicite, par exemple, totaliser par bin(TimeGenerated, 1h).
  • Si vous connaissez et utilisez la fonctionnalité de quantification automatique :
    • Corrigez les requêtes de manière à utiliser la quantification explicite, par exemple, totaliser par bin(TimeGenerated, 1h).

Expressions d’égalité dans l’opérateur Join

Actuellement, la syntaxe du langage autorise l’utilisation d’expressions d’égalité ambiguës comme attributs de Join (par exemple, key1 == key2), qui produisent des résultats non désirés. Nous vous recommandons de changer les expressions d’égalité ambiguës afin d’éviter ce comportement.

Voici un exemple d’expression Join ambiguë (totalisation de la durée de la session quotidienne par ordinateur) :

SecurityEvent

| where EventID == 4624

| join kind= inner (

    SecurityEvent

    | where EventID == 4634

    ) on TargetLogonId == TargetLogonId

| extend Duration = LogoffTime - LogonTime

| summarize sum(Duration) by bin(LogonTime, 1d), Computer

 

Actions recommandées :

  • Si vous n’utilisez pas d’expressions d’égalité dans les opérateurs Join, ni dans les recherches enregistrées ni dans les alertes :
    • Aucune action n’est requise.
  • Si vous utilisez des expressions d’égalité dans les opérateurs Join :
    • Corrigez la syntaxe de l’opérateur Join.
    • Corrigez vos requêtes. Les noms de colonne doivent être qualifiés avec la table de propriétaire applicable définie par les notations $left et $right. Exemples :

| join … on $left.Col1 == $right.Col2

| join … on X (equivalent to: | join … on $left.X == $right.X)

 

  • Log Analytics
  • Azure Monitor
  • Services

Produits apparentés