Grundlegendes zur BigQuery WHERE-Anweisung (Teil 2)

August 23, 2024
Kapitel 4: Die BigQuery WHERE-Anweisung verstehen (Teil 2)

Heute befassen wir uns eingehender mit der WHERE-Anweisung in BigQuery. In diesem zweiten Teil unserer kostenlosen BigQuery-Kursreihe zur Verwendung der WHERE-Anweisung werden wir uns mit fortgeschrittenen Filtertechniken wie der LIKE-Anweisung, dem Umgang mit NULL-Werten, der Verwendung logischer Operatoren und der Nutzung der REGEXP_CONTAINS-Funktion für genauere Abfragen befassen. Egal, ob Sie BigQuery noch nicht kennen oder Ihre Fähigkeiten verbessern möchten, diese Tipps helfen Ihnen dabei, Ihre Datenabfragen zu verfeinern, um bessere Einblicke zu erhalten. Wenn Sie den ersten Teil immer noch nicht gelesen haben, lesen Sie unbedingt „Die WHERE-Anweisung verstehen: Teil 1“.

Arten von Filtern für die WHERE-Anweisung

1. Die LIKE-Aussage

Fangen wir mit der LIKE-Anweisung an. Die LIKE-Anweisung ist ein leistungsstarkes Tool für den Musterabgleich in SQL-Abfragen. Der Vorteil der LIKE-Anweisung besteht darin, dass Sie Zeilen anhand von Teilübereinstimmungen filtern können, indem Sie das Prozentzeichen (%) als Platzhalter verwenden.

SELECT *
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
WHERE name LIKE '%Fillmore St%'
ORDER BY name

Ergebnis mit LIKE mit WHERE-Anweisung abfragen

Diese Abfrage wählt alle Spalten aus dem bike_share_station_info Tabelle. Es filtert Zeilen, in denen Name enthält „Filmore St“ an einer beliebigen Stelle in der Zeichenfolge. Das Ergebnis ist sortiert nach Name Spalte.

2. Die NOT-LIKE-Aussage

SELECT *
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
WHERE name NOT LIKE '%Fillmore St%'
ORDER BY name

Ergebnis mit NOT LIKE-Anweisung abfragen

Diese Abfrage wählt alle Spalten aus dem bike_share_station_info Tabelle, wo Name enthält nirgends in der Zeichenfolge „Filmore St“.

3. Umgang mit NULL- und NOT-NULL-Werten

In SQL stehen NULL-Werte für fehlende oder undefinierte Daten. Es ist wichtig, dass Sie NULLs in Ihren Abfragen richtig behandeln.

SELECT *
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
WHERE region_id IS NULL
ORDER BY name

Diese Abfrage wählt alle Spalten aus der Tabelle 'bike_share_station_info' aus und filtert Zeilen, in denen die 'region_id' NULL ist

Hinweis: Um nach NULL-Werten zu suchen, verwenden Sie 'IS NULL' statt '='

Eine Beispielabfrage für NOT NULL lautet:

SELECT *
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
WHERE region_id IS NOT NULL
ORDER BY name

Diese Abfrage wählt alle Spalten aus der Tabelle 'bike_share_station_info' aus und filtert Zeilen, in denen die 'region_id' nicht NULL ist

4. Verwendung logischer Operatoren: UND UND ODER

Logische Operatoren ermöglichen es Ihnen, mehrere Bedingungen in Ihrer WHERE-Klausel zu kombinieren. Die UND Der Operator verlangt, dass alle Bedingungen wahr sind, während der ODER Der Operator erfordert, dass mindestens eine Bedingung wahr ist.

Beispielabfrage mit UND:

SELECT *
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
WHERE region_id IS NULL
  AND name LIKE '%st%'
ORDER BY name

Abfrageergebnis mit dem logischen Operator 'AND' für mehrere Filterbedingungen und der LIKE-Anweisung

Diese Abfrage wählt alle Spalten aus der Tabelle 'bike_share_station_info' aus und filtert Zeilen, in denen die region_id nicht NULL ist und der Name der Station die Enden „St“ enthält

Beispielabfrage mit ODER:

SELECT *
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
WHERE region_id IS NULL
  OR name LIKE '%st%'
ORDER BY name

Diese Abfrage wählt alle Spalten aus dem'bike_share_station_info' Tabelle und filtert Zeilen, entweder ist die region_id NULL oder der Stationsname enthält „ST“.

Ergebnisse mit dem logischen OR-Operator und der LIKE-Anweisung abfragen

5. REGEXP_CONTAINS Funktion

Das REGEXP_CONTAINS Mit der Funktion in BigQuery können Sie reguläre Ausdrücke für den Mustervergleich verwenden. Dies kann leistungsfähiger und flexibler sein als die LIKE-Anweisung.

Beispielabfrage mit LIKE-Anweisung:

SELECT 
    order_number, 
    order_created_at, 
    customer_id,
    product_sku,
    product_last_name,
    order_rank
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
 WHERE TRUE
    AND product_last_name LIKE '%Hoodie%'
ORDER BY order_created_at

Beispielabfrage mit REGEX:

SELECT 
    order_number, 
    order_created_at, 
    customer_id,
    product_sku,
    product_last_name,
    order_rank
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
 WHERE REGEXP_CONTAINS(product_last_name,'Hoodie')
ORDER BY order_created_at

Ergebnis mit REGEX_CONTAINS in der WHERE-Anweisung abfragen

Diese Abfrage wählt alle Spalten aus der Tabelle 'order_item' aus und filtert Zeilen, in denen 'product_last_name' die Zeichenfolge „hoodie“ enthält, mithilfe eines regulären Ausdrucks. Im Gegensatz zur LIKE-Anweisung erfordert 'REGEX_CONTAINS' kein Prozentzeichen, was es für komplexe Muster einfacher macht.

Wenn Sie beispielsweise ein Prozentzeichen mit REGEX_CONTAINS hinzufügen, wird der Prozentsatz als Teil der Zeichenfolge betrachtet, nicht als Sonderzeichen

Beispiel für eine Abfrage

SELECT 
    order_number, 
    order_created_at, 
    customer_id,
    product_sku,
    product_last_name,
    order_rank
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
 WHERE REGEXP_CONTAINS(product_last_name,'%Hoodie')
ORDER BY order_created_at

Ergebnis mit Prozentzeichen in REGEX_CONTAINS abfragen

Falls Sie Ergebniszeilen abfragen möchten, die das Wort 'Hoodie' nicht enthalten, mit REGEX_CONTAINS

SELECT 
    order_number, 
    order_created_at, 
    customer_id,
    product_sku,
    product_last_name,
    order_rank
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
 WHERE REGEXP_CONTAINS(product_last_name,'%Hoodie') = FALSE
ORDER BY order_created_at

6. Kombinieren mehrerer Bedingungen

Sie können mehrere Bedingungen kombinieren, um Ihre Abfragen weiter zu verfeinern.

Hinweis: Vermeiden Sie es, AND und OR zusammen zu verwenden. Falls es unbedingt erforderlich ist, hilft die Verwendung von Klammern dabei, die Reihenfolge der Auswertung zu kontrollieren, wenn die Operatoren AND und OR gemischt werden.

Beispielabfrage:

SELECT 
    order_number, 
    order_created_at, 
    customer_id,
    product_sku,
    product_last_name,
    order_rank
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
 WHERE REGEXP_CONTAINS(product_last_name,'%Hoodie') = FALSE
    AND order_rank = 1
    AND (product_sku LIKE 'FA%' OR product_sku LIKE 'FB%')
ORDER BY order_created_at

Diese Abfrage wählt alle Spalten aus der Tabelle order_item aus. Sie filtert Zeilen, in denen product_last_name nicht „Hoodie“ enthält, der order_rank 1 ist und die product_sku mit „FA“ oder „FB“ beginnt.

Die Verwendung von Klammern stellt sicher, dass die OR-Bedingung zusammen mit den AND-Bedingungen korrekt ausgewertet wird.

Fazit

Für das Abfragen von Daten in BigQuery ist es entscheidend, die WHERE-Anweisung zu verstehen und effektiv zu verwenden. Die LIKE-Anweisung, die NULL-Werte verarbeitet, logische Operatoren und die REGEXP_CONTAINS-Funktion bieten leistungsstarke Möglichkeiten zum Filtern und Verfeinern Ihrer Daten. Durch die Kombination dieser Techniken können Sie präzisere und effizientere Abfragen schreiben, um bessere Erkenntnisse aus Ihren Datensätzen zu gewinnen. Weitere Tutorials und Tipps finden Sie auf unserem DAT-YouTube-Kanal. Vergessen Sie nicht, in unserem Blog auf Medium nach ausführlichen Artikeln zu BigQuery und anderen Datenthemen zu suchen. Viel Spaß beim Abfragen!

Abonnieren Sie unseren Newsletter
Danke! Deine Einreichung ist eingegangen!
Hoppla! Beim Absenden des Formulars ist etwas schief gelaufen.