Partitions- und Clusterempfehlungen anwenden

In diesem Dokument wird gezeigt, wie Sie Partitions- und Clusterempfehlungen auf BigQuery-Tabellen anwenden.

Beschränkungen

Der Partitionierungs- und Clustering-Recommender unterstützt keine BigQuery-Tabellen mit Legacy-SQL. Beim Generieren einer Empfehlung schließt der Recommender alle Legacy-SQL-Abfragen in der Analyse aus. Darüber hinaus werden durch das Anwenden von Partitionsempfehlungen auf BigQuery-Tabellen mit Legacy-SQL alle Legacy-SQL-Workflows in dieser Tabelle beeinträchtigt.

Bevor Sie Partitionsempfehlungen anwenden, migrieren Sie Ihre Legacy-SQL-Workflows in Google SQL.

Der Partitionierungs- und Clustering-Recommender unterstützt keine Ressourcen, die in den folgenden Regionen gespeichert sind:

  • europe-central2, europe-west8, europe-west9, europe-west12, europe-north1, europe-southwest1
  • us-east1, us-east5, us-south1
  • me-central1, me-central2, me-west1
  • australia-southeast2
  • southamerica-west1

Hinweise

  1. Achten Sie darauf, dass die Recommender API aktiviert ist.
  2. Prüfen Sie, ob Sie die erforderlichen IAM-Berechtigungen (Identity and Access Management) haben.

Clusterempfehlungen anwenden

Sie können Clusterempfehlungen anwenden, wenn Sie Cluster auf eine Kopie der ursprünglichen Tabelle anwenden, sie direkt auf die ursprüngliche Tabelle anwenden oder materialisierte Ansichten verwenden.

Clusterempfehlungen auf eine kopierte Tabelle anwenden

Wenn Sie Clusterempfehlungen auf eine BigQuery-Tabelle anwenden, können Sie zuerst die ursprüngliche Tabelle kopieren und dann die Empfehlung auf die kopierte Tabelle anwenden. So wird sichergestellt, dass Ihre ursprünglichen Daten erhalten bleiben, wenn Sie ein Rollback der Änderung auf die Clustering-Konfiguration durchführen müssen.

Sie können diese Methode verwenden, um Clusterempfehlungen sowohl auf nicht partitionierte als auch auf partitionierte Tabellen anzuwenden.

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Erstellen Sie im Abfrageeditor mit dem LIKE-Operator eine leere Tabelle mit denselben Metadaten (einschließlich der Clustering-Spezifikationen) der ursprünglichen Tabelle:

    CREATE TABLE DATASET.COPIED_TABLE
    LIKE DATASET.ORIGINAL_TABLE
    

    Dabei gilt:

    • DATASET: der Name des Datasets, das die Tabelle enthält, z. B. mydataset
    • COPIED_TABLE: der Name der kopierten Tabelle, z. B. copy_mytable
    • ORIGINAL_TABLE: der Name der ursprünglichen Tabelle, z. B. mytable
  3. Öffnen Sie in der Google Cloud Console den Cloud Shell-Editor.

    Cloud Shell aktivieren

  4. Aktualisieren Sie im Cloud Shell-Editor die Clustering-Spezifikation der kopierten Tabelle mit dem empfohlenen Clustering. Verwenden Sie dazu den Befehl bq update:

     bq update --clustering_fields=CLUSTER_COLUMN DATASET.COPIED_TABLE 

    Ersetzen Sie CLUSTER_COLUMN durch die Spalte, die Sie clustern, z. B. mycolumn.

    Sie können auch die API-Methode tables.update oder tables.patch aufrufen, um die Clustering-Spezifikation zu ändern.

  5. Rufen Sie im Abfrageeditor das Tabellenschema mit der Partitionierungs- und Clustering-Konfiguration der ursprünglichen Tabelle ab, sofern eine Partitionierung oder ein Clustering vorhanden ist. Sie können das Schema abrufen, wenn Sie die Ansicht INFORMATION_SCHEMA.TABLES der ursprünglichen Tabelle anzeigen:

    SELECT
      ddl
    FROM
      DATASET.INFORMATION_SCHEMA.TABLES
    WHERE
      table_name = 'DATASET.ORIGINAL_TABLE;'
    

    Die Ausgabe ist die vollständige DDL-Anweisung (Datendefinitionssprache) von ORIGINAL_TABLE, einschließlich der Klausel PARTITION BY. Weitere Informationen zu den Argumenten in der DDL-Ausgabe finden Sie unter CREATE TABLE-Anweisung.

    Die DDL-Ausgabe gibt den Partitionierungstyp in der ursprünglichen Tabelle an:

    Partitionierungstyp Ausgabebeispiel
    Nicht partitioniert Die PARTITION BY-Klausel fehlt.
    Nach Tabellenspalte partitioniert PARTITION BY c0
    PARTITION BY DATE(c0)
    PARTITION BY DATETIME_TRUNC(c0, MONTH)
    Nach Aufnahmezeit partitioniert PARTITION BY _PARTITIONDATE
    PARTITION BY DATETIME_TRUNC(_PARTITIONTIME, MONTH)
  6. Daten in die kopierte Tabelle aufnehmen. Der verwendete Prozess basiert auf dem Partitionstyp.

    • Wenn die ursprüngliche Tabelle nicht partitioniert oder durch eine Tabellenspalte partitioniert ist, nehmen Sie die Daten aus der ursprünglichen Tabelle in die kopierte Tabelle auf:
      INSERT INTO DATASET.COPIED_TABLE
      SELECT * FROM DATASET.ORIGINAL_TABLE
      
    • Wenn die ursprüngliche Tabelle nach Aufnahmezeit partitioniert ist, gehen Sie so vor:

      1. Rufen Sie die Liste der Spalten ab, um den Datenaufnahmeausdruck mithilfe der Ansicht INFORMATION_SCHEMA.COLUMNS zu bilden:

        SELECT
        ARRAY_TO_STRING((
        SELECT
          ARRAY(
          SELECT
            column_name
          FROM
            DATASET.INFORMATION_SCHEMA.COLUMNS
          WHERE
            table_name = 'ORIGINAL_TABLE')), ", ")
        

        Die Ausgabe ist eine durch Kommas getrennte Liste von Spaltennamen.

      2. Nehmen Sie die Daten aus der ursprünglichen Tabelle in die Kopiertabelle auf:

        INSERT DATASET.COPIED_TABLE (COLUMN_NAMES, _PARTITIONTIME)
        SELECT *, _PARTITIONTIME FROM DATASET.ORIGINAL_TABLE
        

        Ersetzen Sie COLUMN_NAMES durch die durch Kommas getrennte Liste der Spalten, die im vorherigen Schritt ausgegeben wurde. Beispiel: col1, col2, col3.

    Sie haben jetzt eine geclusterte Tabelle mit denselben Daten wie die ursprüngliche Tabelle. In den nächsten Schritten ersetzen Sie die ursprüngliche Tabelle durch eine neu geclusterte Tabelle.

  7. Benennen Sie die ursprüngliche Tabelle in eine Sicherungstabelle um:

    ALTER TABLE DATASET.ORIGINAL_TABLE
    RENAME TO DATASET.BACKUP_TABLE
    

    Ersetzen Sie BACKUP_TABLE durch einen Namen für die Sicherungstabelle, z. B. backup_mytable.

  8. Benennen Sie die kopierte Tabelle in die ursprüngliche Tabelle um:

    ALTER TABLE DATASET.COPIED_TABLE
    RENAME TO DATASET.ORIGINAL_TABLE
    

    Die ursprüngliche Tabelle wird jetzt gemäß der Clusterempfehlung geclustert.

Wir empfehlen Ihnen, die geclusterte Tabelle zu prüfen, damit alle Tabellenfunktionen wie vorgesehen funktionieren. Viele Tabellenfunktionen sind wahrscheinlich an die Tabellen-ID und nicht an den Tabellennamen gebunden. Daher sollten Sie die folgenden Tabellenfunktionen prüfen, bevor Sie fortfahren:

Wenn Probleme auftreten, müssen Sie die betroffenen Artefakte manuell in die neue Tabelle migrieren.

Nachdem Sie die geclusterte Tabelle geprüft haben, können Sie optional die Sicherungstabelle mit dem folgenden Befehl löschen:
    DROP TABLE DATASET.BACKUP_TABLE
    

Clusterempfehlungen direkt anwenden

Sie können Clusterempfehlungen direkt auf eine vorhandene BigQuery-Tabelle anwenden. Diese Methode ist schneller als das Anwenden von Empfehlungen auf eine kopierte Tabelle, aber eine Sicherungstabelle bleibt dabei nicht erhalten.

Führen Sie die folgenden Schritte aus, um eine neue Clustering-Spezifikation auf nicht partitionierte oder partitionierte Tabellen anzuwenden.

  1. Aktualisieren Sie im bq-Tool die Clustering-Spezifikation Ihrer Tabelle, damit sie dem neuen Clustering entspricht:

     bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE 

    Ersetzen Sie Folgendes:

    • CLUSTER_COLUMN: die Spalte, nach der Sie Cluster gruppieren, z. B. mycolumn
    • DATASET: der Name des Datasets, das die Tabelle enthält, z. B. mydataset
    • ORIGINAL_TABLE: der Name der ursprünglichen Tabelle, z. B. mytable

    Sie können auch die API-Methode tables.update oder tables.patch aufrufen, um die Clustering-Spezifikation zu ändern.

  2. Führen Sie die folgende UPDATE-Anweisung aus, um alle Zeilen gemäß der neuen Clustering-Spezifikation zu clustern:

    UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true
    

Clusterempfehlungen mit materialisierten Ansichten anwenden

Sie können eine materialisierte Ansicht der Tabelle erstellen, um Daten aus der ursprünglichen Tabelle mit der angewendeten Empfehlung zu speichern. Durch die Verwendung von materialisierten Ansichten zur Anwendung von Empfehlungen wird sichergestellt, dass die geclusterten Daten mithilfe von automatischen Aktualisierungen auf dem neuesten Stand bleiben. Beim Abfragen, Verwalten und Speichern von materialisierten Ansichten gibt es Überlegungen zur Preisgestaltung. Geclusterte materialisierte Ansichten erstellen.

Partitionsempfehlungen anwenden

Sie können Partitionsempfehlungen anwenden, wenn Sie Partitionen auf eine Kopie der ursprünglichen Tabelle anwenden.

Partitionsempfehlungen auf eine kopierte Tabelle anwenden

Wenn Sie Partitionsempfehlungen auf eine BigQuery-Tabelle anwenden, können Sie zuerst die ursprüngliche Tabelle kopieren und dann die Empfehlung auf die kopierte Tabelle anwenden. So werden die ursprünglichen Daten beibehalten, falls Sie eine Partition zurücksetzen müssen.

Das folgende Verfahren verwendet eine Beispielempfehlung, um eine Tabelle nach der Partitionszeiteinheit DAY zu partitionieren.

  1. Erstellen Sie eine kopierte Tabelle mit den Partitionsempfehlungen:

    CREATE TABLE DATASET.COPIED_TABLE
    PARTITION BY DATE_TRUNC(PARTITION_COLUMN, DAY)
    AS SELECT * FROM DATASET.ORIGINAL_TABLE
    

    Dabei gilt:

    • DATASET: der Name des Datasets, das die Tabelle enthält, z. B. mydataset
    • COPIED_TABLE: der Name der kopierten Tabelle, z. B. copy_mytable
    • PARTITION_COLUMN: die Spalte, nach der Sie partitionieren, z. B. mycolumn

    Weitere Informationen zum Erstellen von partitionierten Tabellen erhalten Sie unter Partitionierte Tabellen erstellen.

  2. Benennen Sie die ursprüngliche Tabelle in eine Sicherungstabelle um:

    ALTER TABLE DATASET.ORIGINAL_TABLE
    RENAME TO DATASET.BACKUP_TABLE
    

    Ersetzen Sie BACKUP_TABLE durch einen Namen für die Sicherungstabelle, z. B. backup_mytable.

  3. Benennen Sie die kopierte Tabelle in die ursprüngliche Tabelle um:

    ALTER TABLE DATASET.COPIED_TABLE
    RENAME TO DATASET.ORIGINAL_TABLE
    

    Die ursprüngliche Tabelle wird jetzt gemäß der Partitionsempfehlung partitioniert.

Wir empfehlen Ihnen, die partitionierte Tabelle zu prüfen, damit alle Tabellenfunktionen wie vorgesehen funktionieren. Viele Tabellenfunktionen sind wahrscheinlich an die Tabellen-ID und nicht an den Tabellennamen gebunden. Daher sollten Sie die folgenden Tabellenfunktionen prüfen, bevor Sie fortfahren:

Wenn Probleme auftreten, müssen Sie die betroffenen Artefakte manuell in die neue Tabelle migrieren.

Nachdem Sie die partitionierte Tabelle geprüft haben, können Sie optional die Sicherungstabelle mit dem folgenden Befehl löschen:
    DROP TABLE DATASET.BACKUP_TABLE
    

Preise

Wenn Sie eine Empfehlung auf eine Tabelle anwenden, können folgende Kosten anfallen:

  • Verarbeitungskosten. Wenn Sie eine Empfehlung anwenden, führen Sie eine DDL-Abfrage (Datendefinitionssprache) oder eine DML-Abfrage (Datenbearbeitungssprache) für Ihr BigQuery-Projekt aus.
  • Speicherkosten. Wenn Sie die Methode zum Kopieren einer Tabelle verwenden, verwenden Sie zusätzlichen Speicher für die kopierte (oder Sicherungs-)Tabelle.

Standardverarbeitungs- und Speichergebühren hängen vom Rechnungskonto ab, das dem Projekt zugeordnet ist. Weitere Informationen finden Sie unter BigQuery-Preise.