Übung: Filtern von Daten mit dem where-Operator

Abgeschlossen

Denken Sie daran, dass Sie bestimmte Spalten durch Filtern in die angezeigten Ergebnisse ein- oder aus ihnen ausgeschlossen haben. In dieser Lerneinheit erfahren Sie, wie Sie Antworten auf Fragen zu der Art von meteorologischen Ereignissen in verschiedenen Regionen oder Zeiträumen und zu den Arten von Ereignissen erhalten, die Schäden verursacht haben.

Verwenden Sie den where-Operator

Bisher haben alle Operatoren, die Sie verwendet haben, ausgewählte Spalten zurückgegeben. Sehen wir uns nun bestimmte Datenzeilen an.

Der where-Operator filtert Ergebnisse, die eine bestimmte Bedingung erfüllen. In diesem ersten Beispiel vergleichen Sie eine Spalte mit ganzen Zahlen mit einem Mindestwert unter Verwendung des numerischen Operators größer als (>). Insbesondere möchten Sie nur Stürme sehen, die Schäden an Immobilien verursacht haben. Sie suchen also nach Datenzeilen, in denen der Schaden an Immobilien größer als null ist.

  1. Führen Sie die folgende Abfrage aus:

    Abfrage ausführen

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot of query results of a where operator with a numerical operator of greater than zero.

  3. Beachten Sie, dass alle zurückgegebenen Zeilen tatsächlich DamageProperty-Werte größer als 0 (null) enthalten.

  4. Auf ähnliche Weise können Sie Ereignisse filtern, deren Eintreten mehr als eine bestimmte Anzahl von Tagen zurückliegt. Führen Sie beispielsweise die folgende Abfrage aus, wobei 365d 365 Tage bedeutet:

    Abfrage ausführen

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. Beachten Sie, dass diese Abfrage keine Ergebnisse zurückgibt. Da die Daten aus dem Jahr 2007 stammen, gibt es keine Datensätze aus dem Jahr davor.

Filtern mithilfe eines Zeichenfolgenwerts

Es hat den Anschein, als ob einige Arten von Stürmen überall in den USA Schäden verursacht haben. Beschränken wir uns auf Stürme, die an einem bestimmten Ort aufgetreten sind, z. B. im Bundesstaat Florida.

  1. Führen Sie die folgende Abfrage aus, die einen zweiten where-Operator mit dem Zeichenfolgenwert "FLORIDA" verwendet:

    Abfrage ausführen

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot of query results for two where operators.

  3. Beachten Sie, dass alle Datensätze, die von dieser Abfrage zurückgegeben werden, aus Florida stammen und Ernteschäden größer als 0 (null) aufweisen.

Filtern mit dem has-Operator

Einer der Ereignistypen in den Ergebnissen der letzten Abfrage trägt den Namen Gewitterwind. Sehen wir uns an, ob es andere Arten von Wind gibt, die in Florida Sachschäden verursacht haben. Wir suchen mithilfe des has-Operators nach einer Übereinstimmung mit der Zeichenfolge wind. Der has-Operator führt eine Suche der, bei der die Groß-/Kleinschreibung nicht beachtet wird und die nach Übereinstimmung mit einem vollständigen Ausdruck sucht.

  1. Führen Sie die folgende Abfrage aus:

    Abfrage ausführen

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot of query results for where and has operators.

  3. Beachten Sie, dass in den Ergebnissen keine Ereignisse wie Tornados mehr angezeigt werden, sondern Ereignisarten wie Thunderstorm Wind (Windsturm) und Strong Wind (Starkwind).

Der contains-Operator ähnelt has, sucht jedoch nach Übereinstimmung mit einer beliebigen Teilzeichenfolge. Die folgende Abfrage gibt z. B. Ergebnisse wie Freezing fog (Gefrierender Nebel) und Frost/Freeze (Frost/Kälte) zurück.

StormEvents | where EventType contains "free"

Der has-Operator weist eine bessere Leistung als der contains-Operator auf. Sie sollten also immer has verwenden, wenn Sie zwischen den beiden wählen können.

Filtern nach datetime-Werten

Sehen wir uns die Schäden in der ersten Hälfte des Kalenderjahrs genauer an. Es kann sinnvoll sein, die Suche auf Ereignisse innerhalb eines bestimmten Zeitraums zu beschränken. Einige Schnittstellen mit der Kusto-Abfragesprache verfügen über eine Dropdownzeitauswahl, bei anderen ist es hingegen erforderlich, dass Sie den Datumsfilter in die Abfrage selbst einbauen.

Da Zeiträume durch zwei Randwerte begrenzt sind, ist es am effizientesten, eine Abfrage zu erstellen, bei der wir einen Wert auswählen, der zwischen diesen beiden Zeitpunkten liegt.

Die Syntax zum Erstellen dieses Datumsbereichs lautet wie folgt:

whereZeitbetween(datetime(Wert)..datetime(Wert))

  1. Diesen datetime-Bereich integrieren wir in eine Art von Abfrage, die wir bereits kennen. Führen Sie die folgende Abfrage aus:

    Abfrage ausführen

    StormEvents
    | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01))
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | project StartTime, EventType, DamageProperty
    | take 50
    
  2. Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot of query results for where operators that include a time range.

  3. Beachten Sie, dass alle Datumsangaben innerhalb der ersten Hälfte des Jahres liegen, Monate eins bis sechs. Sie können auch erkennen, dass der Bundesstaat nicht als Ausgabespalte aufgeführt wird, obwohl Sie Ereignisse aus dem Bundesstaat Florida ausgewählt haben, da er nicht im project-Operator angegeben wurde.