Übung: Filtern von Daten mit dem where-Operator
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.
Führen Sie die folgende Abfrage aus:
StormEvents | where DamageProperty > 0 | project State, EventType, DamageProperty | take 10
Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:
Beachten Sie, dass alle zurückgegebenen Zeilen tatsächlich DamageProperty-Werte größer als 0 (null) enthalten.
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:StormEvents | where DamageProperty > 0 | where StartTime > ago(365d) | project State, EventType, DamageProperty
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.
Führen Sie die folgende Abfrage aus, die einen zweiten
where
-Operator mit dem Zeichenfolgenwert"FLORIDA"
verwendet:StormEvents | where DamageCrops > 0 | where State == "FLORIDA" | project State, EventType, DamageCrops
Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:
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.
Führen Sie die folgende Abfrage aus:
StormEvents | where DamageProperty > 0 | where State == "FLORIDA" | where EventType has "wind" | project StartTime, EventType, DamageProperty
Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:
Beachten Sie, dass in den Ergebnissen keine Ereignisse wie Tornados mehr angezeigt werden, sondern Ereignisarten wie Windsturm und Starkwind.
Der contains
-Operator ähnelt has
, sucht jedoch nach Übereinstimmung mit einer beliebigen Teilzeichenfolge. Die folgende Abfrage gibt z. B. Ergebnisse wie Gefrierender Nebel und 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:
where
timebetween
(datetime(
Wert)..datetime(
Wert))
Diesen
datetime
-Bereich integrieren wir in eine Art von Abfrage, die wir bereits kennen. Führen Sie die folgende Abfrage aus:StormEvents | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01)) | where DamageProperty > 0 | where State == "FLORIDA" | project StartTime, EventType, DamageProperty | take 50
Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:
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.