DDL-Anweisungen (Data Definition Language, Datendefinitionssprache) in Standard-SQL
Mithilfe von DDL-Anweisungen (Data Definition Language, Datendefinitionssprache) können Sie BigQuery-Ressourcen mit der Standard-SQL-Abfragesyntax erstellen und ändern. Mit DDL-Befehlen können Sie Ressourcen erstellen, ändern und löschen, z. B.:Tabellen ,Tabellenklone ,Tabellen-Snapshots ,Ansichten ,benutzerdefinierte Funktionen (UDFs) undZugriffsrichtlinien auf Zeilenebene.
Erforderliche Berechtigungen
Zum Erstellen eines Jobs, der eine DDL-Anweisung ausführt, benötigen Sie die Berechtigung bigquery.jobs.create
für das Projekt, in dem Sie den Job ausführen.
Jede DDL-Anweisung erfordert außerdem bestimmte Berechtigungen für die betroffenen Ressourcen, die unter jeder Anweisung dokumentiert sind.
IAM-Rollen
Die vordefinierten IAM-Rollen bigquery.user
, bigquery.jobUser
und bigquery.admin
enthalten die erforderliche bigquery.jobs.create
-Berechtigung.
Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen oder in der Referenz zu IAM-Berechtigungen.
DDL-Anweisungen ausführen
Sie können DDL-Anweisungen mit der Console, dem bq
-Befehlszeilentool oder der REST API jobs.query
oder programmatisch mithilfe der BigQuery API-Clientbibliotheken ausführen.
Console
Gehen Sie in der Console zur Seite "BigQuery".
Klicken Sie auf Neue Abfrage erstellen.
Geben Sie die DDL-Anweisung in den Textbereich des Abfrageeditors ein. Beispiel:
CREATE TABLE mydataset.newtable ( x INT64 )
Klicken Sie auf Ausführen.
bq
Geben Sie den Befehl bq query
ein und legen Sie die DDL-Anweisung als Suchparameter fest. Legen Sie das Flag use_legacy_sql
auf false
fest.
bq query --use_legacy_sql=false \ 'CREATE TABLE mydataset.newtable ( x INT64 )'
API
Rufen Sie die Methode jobs.query
auf und geben Sie die DDL-Anweisung im Attribut query
des Anfragetextes an.
Die DDL-Funktionalität erweitert die von einer Jobressource zurückgegebenen Informationen.
statistics.query.statementType
enthält die folgenden zusätzlichen Werte zur DDL-Unterstützung:
CREATE_TABLE
CREATE_TABLE_AS_SELECT
DROP_TABLE
CREATE_VIEW
DROP_VIEW
statistics.query
hat zwei zusätzliche Felder:
ddlOperationPerformed
: Der DDL-Vorgang wurde ausgeführt, möglicherweise abhängig davon, ob das DDL-Ziel vorhanden ist. Zu den aktuellen Werten gehören:CREATE
: Die Abfrage hat das DDL-Ziel erstellt.SKIP
: Managementfrei. Beispiele:CREATE TABLE IF NOT EXISTS
wurde gesendet und die Tabelle ist vorhanden. OderDROP TABLE IF EXISTS
wurde gesendet und die Tabelle ist nicht vorhanden.REPLACE
: Die Abfrage hat das DDL-Ziel ersetzt. Beispiel:CREATE OR REPLACE TABLE
wurde gesendet und die Tabelle ist bereits vorhanden.DROP
: Die Abfrage hat das DDL-Ziel gelöscht.
ddlTargetTable
: Wenn Sie die AnweisungCREATE TABLE/VIEW
oderDROP TABLE/VIEW
senden, wird die Zieltabelle als Objekt mit drei Feldern zurückgegeben:- "projectId": String
- "datasetId": String
- "tableId": String
Java
Rufen Sie die Methode BigQuery.create()
auf, um einen Abfragejob zu starten. Rufen Sie die Methode Job.waitFor()
auf, um auf den Abschluss der DDL-Abfrage zu warten.
Node.js
Python
Rufen Sie die Methode Client.query()
auf, um einen Abfragejob zu starten. Rufen Sie die Methode QueryJob.result()
auf, um auf den Abschluss der DDL-Abfrage zu warten.
CREATE SCHEMA
-Anweisung
Erstellt ein neues Dataset.
Syntax
CREATE SCHEMA [ IF NOT EXISTS ] [project_name.]dataset_name [DEFAULT COLLATE collate_specification] [OPTIONS(schema_option_list)]
Argumente
IF NOT EXISTS
: Wenn ein Dataset mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.DEFAULT COLLATE collate_specification
: Wenn eine neue Tabelle im Schema erstellt wird, übernimmt die Tabelle eine Standard-Sortierspezifikation, sofern nicht explizit eine Sortierspezifikation für eine Spalte angegeben ist.Wenn Sie diese Sortierspezifikation später mit der Anweisung
ALTER SCHEMA
entfernen oder ändern, ändert dies die vorhandenen Sortierspezifikationen in diesem Schema nicht. Wenn Sie eine vorhandene Sortierspezifikation in einem Schema aktualisieren möchten, müssen Sie die Spalte ändern, die die Spezifikation enthält.project_name
: Der Name des Projekts, in dem Sie das Dataset erstellen. Die Standardeinstellung ist das Projekt, das diese DDL-Anweisung ausführt.dataset_name
: Der Name des zu erstellenden Datasets.schema_option_list
: Eine Liste von Optionen zum Erstellen des Datasets.
Details
Das Dataset wird an dem Ort erstellt, den Sie in den Abfrageeinstellungen angeben. Weitere Informationen finden Sie unter Standort angeben.
Weitere Informationen zum Erstellen eines Datasets finden Sie unter Datasets erstellen. Informationen zu Kontingenten finden Sie unter Dataset-Limits.
schema_option_list
Mit der Optionsliste legen Sie Optionen für das Dataset fest. Geben Sie die Optionen im folgenden Format an: NAME=VALUE, ...
Die folgenden Optionen werden unterstützt:
NAME |
VALUE |
Details |
---|---|---|
default_kms_key_name |
STRING |
Gibt den standardmäßigen Cloud KMS-Schlüssel zum Verschlüsseln von Tabellendaten in diesem Dataset an. Sie können diesen Wert beim Erstellen einer Tabelle überschreiben. |
default_partition_expiration_days |
FLOAT64 |
Gibt die Standardablaufzeit in Tagen für Tabellenpartitionen in diesem Dataset an. Sie können diesen Wert beim Erstellen einer Tabelle überschreiben. |
default_table_expiration_days |
FLOAT64 |
Gibt die Standardablaufzeit in Tagen für Tabellen in diesem Dataset an. Sie können diesen Wert beim Erstellen einer Tabelle überschreiben. |
description |
STRING |
Die Beschreibung des Datasets. |
friendly_name |
STRING |
Ein aussagekräftiger Name für das Dataset. |
labels |
<ARRAY<STRUCT<STRING, STRING>>> |
Ein Array von Labels für das Dataset, ausgedrückt als Schlüssel/Wert-Paare. |
location |
STRING |
Der Standort, an dem das Dataset erstellt werden soll. Wenn Sie diese Option nicht angeben, wird das Dataset an dem Standort erstellt, an dem die Abfrage ausgeführt wird. Wenn Sie diese Option angeben und auch den Standort für den Abfragejob explizit festlegen, müssen die beiden Werte übereinstimmen. Andernfalls schlägt die Abfrage fehl. |
max_time_travel_hours |
SMALLINT |
Gibt die Dauer des Zeitreisefensters für das neue Dataset in Stunden an. Der Wert Weitere Informationen zum Zeitfenster finden Sie unter Zeitfenster konfigurieren. |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.datasets.create |
Das Projekt, in dem Sie das Dataset erstellen. |
Beispiele
Neues Schema erstellen
Im folgenden Beispiel wird ein Dataset mit einem Standardtabellenablauf und einem Satz von Labels erstellt.
CREATE SCHEMA mydataset OPTIONS( location="us", default_table_expiration_days=3.75, labels=[("label1","value1"),("label2","value2")] )
Schema mit Unterstützung für die Sortierung erstellen
Im folgenden Beispiel wird ein Dataset mit einer Sortierspezifikation erstellt.
CREATE SCHEMA mydataset DEFAULT COLLATE 'und:ci'
CREATE TABLE
-Anweisung
: Erstellt eine neue Tabelle.
Syntax
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] TABLE [ IF NOT EXISTS ] table_name [( column[, ...] )] [DEFAULT COLLATE collate_specification] [PARTITION BY partition_expression] [CLUSTER BY clustering_column_list] [OPTIONS(table_option_list)] [AS query_statement]
Argumente
OR REPLACE
: Ersetzt jede Tabelle mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.TEMP | TEMPORARY
: Erstellt eine temporäre Tabelle.IF NOT EXISTS
: Wenn eine Tabelle mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.table_name
: Der Name der zu erstellenden Tabelle. Siehe Tabellenpfadsyntax. Geben Sie für temporäre Tabellen nicht den Projektnamen oder den Dataset-Namen an.column
: Die Schemainformationen der Tabelle.collation_specification
: Wenn eine neue Spalte im Schema erstellt wird und die Spalte keine explizite Sortierspezifikation hat, übernimmt die Spalte diese Sortierspezifikation fürSTRING
-Typen.Wenn Sie diese Sortierspezifikation später mit der Anweisung
ALTER TABLE
entfernen oder ändern, wirkt sich dies nicht auf die vorhandenen Sortierspezifikationen in dieser Tabelle aus. Wenn Sie eine vorhandene Sortierspezifikation in einer Tabelle aktualisieren möchten, müssen Sie die Spalte ändern, die die Spezifikation enthält.Wenn die Tabelle Teil eines Schemas ist, überschreibt die Standardsortierungsspezifikation für diese Tabelle die Standardsortierungsspezifikation für das Schema.
partition_expression
: Ein Ausdruck, der festlegt, wie die Tabelle partitioniert wird.clustering_column_list
: Eine durch Kommas getrennte Liste mit Spaltenreferenzen, die bestimmen, wie die Tabelle geclustert wird. Eine Sortierung nach Spalten in dieser Liste ist nicht möglich.table_option_list
: Eine Liste von Optionen zum Erstellen der Tabelle.query_statement
: Die Abfrage, aus der die Tabelle erstellt werden soll. Informationen zur Abfragesyntax finden Sie in der Referenz zur SQL-Syntax. {: #query_statement } Wenn in dieser Tabelle eine Sortierspezifikation verwendet wird, durchläuft diese Sortierung die Abfrageanweisung.
Details
Für CREATE TABLE
-Anweisungen gelten die folgenden Regeln:
- Es ist nur eine
CREATE
-Anweisung zulässig. - Es muss entweder die Spaltenliste, die
as query_statement
-Klausel oder beides vorhanden sein. - Sind sowohl die Spaltenliste als auch die
as query_statement
-Klausel vorhanden, ignoriert BigQuery die Namen in deras query_statement
-Klausel und gleicht die Spalten mit der Spaltenliste nach Position ab. - Ist nur die
as query_statement
-Klausel und keine Spaltenliste vorhanden, ermittelt BigQuery die Spaltennamen und -typen über dieas query_statement
-Klausel. - Spaltennamen müssen entweder über die Spaltenliste, die
as query_statement
-Klausel oder das Schema der Tabelle in derLIKE
-Klausel angegeben werden. - Identische Spaltennamen sind nicht zulässig.
- Wenn sowohl die
LIKE
- als auch dieas query_statement
-Klausel vorhanden sind, muss die Spaltenliste in der Abfrageanweisung mit den Spalten der Tabelle übereinstimmen, auf die dieLIKE
-Klausel verweist.
Beschränkungen:
- Eine nach Aufnahmezeit partitionierte Tabelle kann nicht aus dem Ergebnis einer Abfrage erstellt werden. Erstellen Sie die Tabelle stattdessen mit der DDL-Anweisung
CREATE TABLE
und fügen Sie anschließend die Daten mithilfe der DML-AnweisungINSERT
ein. - Eine Tabelle kann nicht mit dem Modifikator
OR REPLACE
durch eine andere Art der Partitionierung ersetzt werden. Löschen Sie stattdessen die Tabelle mit dem BefehlDROP
und verwenden Sie anschließend die AnweisungCREATE TABLE ... AS SELECT ...
, um sie neu zu erstellen.
Diese Anweisung unterstützt die folgenden Varianten:
CREATE TABLE LIKE
: Erstellen Sie eine Tabelle mit demselben Schema wie eine vorhandene Tabelle.CREATE TABLE COPY
: Erstellen Sie eine Tabelle. Kopieren Sie dazu Schema und Daten aus einer vorhandenen Tabelle.
column
(column_name column_schema[, ...])
enthält die Schemainformationen der Tabelle in einer durch Kommas getrennten Liste.
column := column_name column_schema column_schema := { simple_type [NOT NULL] | STRUCT<field_list> [NOT NULL] | ARRAY<array_element_schema> } [OPTIONS(column_option_list)] field_list := field_name column_schema [, ...] array_element_schema := { simple_type | STRUCT<field_list> } [NOT NULL] simple_type := { data_type | STRING COLLATE collate_specification }
column_name
ist der Name der Spalte. Ein Spaltenname:- darf nur Buchstaben (a–z, A–Z), Ziffern (0–9) und Unterstriche (_) enthalten
- Er muss mit einem Buchstaben oder Unterstrich beginnen.
- Er kann bis zu 300 Zeichen enthalten.
column_schema
: Entspricht einem Datentyp, unterstützt aber eine optionaleNOT NULL
-Einschränkung für andere Typen alsARRAY
.column_schema
unterstützt auch Optionen für Spalten auf der obersten Ebene undSTRUCT
-Felder.column_schema
kann nur in der Spaltendefinitionsliste vonCREATE TABLE
-Anweisungen und nicht als Typ in Ausdrücken verwendet werden. Fürsimple_type
: Kann ein beliebiger unterstützter Datentyp außerSTRUCT
undARRAY
sein.Wenn
simple_type
einSTRING
ist, wird eine zusätzliche Klausel für die Sortierung unterstützt, die definiert, wie ein resultierenderSTRING
verglichen und sortiert werden kann. Die Syntax sieht so aus:STRING COLLATE collate_specification
Wenn Sie der Tabelle
DEFAULT COLLATE collate_specification
zugewiesen haben, überschreibt die Sortierspezifikation für eine Spalte die Spezifikation für die Tabelle.field_list
: Stellt die Felder in einem Struct dar.field_name
: Der Name des Struct-Felds. Für Namen von STRUCT-Feldern gelten die gleichen Einschränkungen wie für Spaltennamen.NOT NULL
: Wenn für eine Spalte oder ein Feld die EinschränkungNOT NULL
gilt, wird die Spalte bzw. das Feld mit dem ModusREQUIRED
erstellt. Ist hingegen die EinschränkungNOT NULL
nicht vorhanden, wird die Spalte bzw. das Feld mit dem ModusNULLABLE
erstellt.Spalten und Felder vom Typ
ARRAY
unterstützen nicht den ModifikatorNOT NULL
. Eincolumn_schema
vom TypARRAY<INT64> NOT NULL
ist beispielsweise ungültig, daARRAY
-Spalten den ModusREPEATED
haben und leer sein, aber nichtNULL
sein können. Ein Arrayelement in einer Tabelle kann nichtNULL
sein, unabhängig davon, ob die EinschränkungNOT NULL
angegeben ist.ARRAY<INT64>
entspricht beispielsweiseARRAY<INT64 NOT NULL>
.Das Attribut
NOT NULL
voncolumn_schema
einer Tabelle wird nicht durch Abfragen über die Tabelle weitergegeben. Wenn die TabelleT
zum Beispiel eine Spalte enthält, die alsx INT64 NOT NULL
deklariert ist, erstelltCREATE TABLE dataset.newtable AS SELECT x FROM T
eine Tabelle mit dem Namendataset.newtable
, in derx
den WertNULLABLE
hat.
partition_expression
PARTITION BY
ist eine optionale Klausel, die die Tabellenpartitionierung steuert. partition_expression
ist ein Ausdruck, der festlegt, wie die Tabelle partitioniert wird. Der Partitionsausdruck kann die folgenden Werte enthalten:
_PARTITIONDATE
. Nach Aufnahmezeit mit täglichen Partitionen partitionieren. Diese Syntax kann nicht mit derAS query_statement
-Klausel verwendet werden.DATE(_PARTITIONTIME)
. Entspricht_PARTITIONDATE
. Diese Syntax kann nicht mit derAS query_statement
-Klausel verwendet werden.<date_column>
. Partitioniert nach einer Spalte vom TypDATE
mit täglichen Partitionen.DATE({ <timestamp_column> | <datetime_column> })
. Partitioniert nach einer Spalte vom TypTIMESTAMP
oderDATETIME
mit täglichen Partitionen.DATETIME_TRUNC(<datetime_column>, { DAY | HOUR | MONTH | YEAR })
. Partitioniert nach einer Spalte vom TypDATETIME
mit dem angegebenen Partitionierungstyp.TIMESTAMP_TRUNC(<timestamp_column>, { DAY | HOUR | MONTH | YEAR })
. Partitioniert nach einer Spalte vom TypTIMESTAMP
mit dem angegebenen Partitionierungstyp.TIMESTAMP_TRUNC(_PARTITIONTIME, { DAY | HOUR | MONTH | YEAR })
. Partitioniert nach dem Aufnahmezeitpunkt mit dem angegebenen Partitionierungstyp. Diese Syntax kann nicht mit derAS query_statement
-Klausel verwendet werden.DATE_TRUNC(<date_column>, { MONTH | YEAR })
. Partitioniert nach einer Spalte vom TypDATE
mit dem angegebenen Partitionierungstyp.RANGE_BUCKET(<int64_column>, GENERATE_ARRAY(<start>, <end>[, <interval>]))
. Partitioniert nach einer Ganzzahlspalte mit dem angegebenen Bereich, wobei:start
ist der Anfang der Bereichspartitionierung (einschließlich).end
ist das Ende der Bereichspartitionierung (ausschließlich).interval
ist die Breite des jeweiligen Bereichs in der Partition. Der Standardfaktor ist 1.
clustering_column_list
CLUSTER BY
ist eine optionale Klausel, die das Tabellen-Clustering steuert.
clustering_column_list
ist eine durch Kommas getrennte Liste, mit der festgelegt wird, wie die Tabelle geclustert wird. Die Liste der Clustering-Spalten kann eine Liste mit bis zu vier Clustering-Spalten enthalten.
table_option_list
Mit der Optionsliste können Sie Tabellenoptionen wie ein Label oder eine Ablaufzeit festlegen. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.
Eine Tabellenoptionsliste muss im folgenden Format angegeben werden:
NAME=VALUE, ...
NAME
und VALUE
müssen mit einer der folgenden Varianten kombiniert werden:
NAME |
VALUE |
Details |
---|---|---|
expiration_timestamp |
TIMESTAMP |
Beispiel: Dieses Attribut entspricht dem Attribut expirationTime der Tabellenressource. |
partition_expiration_days |
|
Beispiel: Legt den Partitionsablauf in Tagen fest. Weitere Informationen finden Sie unter Partitionsablauf festlegen. Standardmäßig laufen Partitionen nicht ab. Dieses Attribut entspricht dem Attribut timePartitioning.expirationMs der Tabellenressource, verwendet jedoch Tage anstelle von Millisekunden. Ein Tag entspricht 86.400.000 Millisekunden oder 24 Stunden. Dieses Attribut kann nur festgelegt werden, wenn die Tabelle partitioniert ist. |
require_partition_filter |
|
Beispiel: Gibt an, ob Abfragen für diese Tabelle einen Prädikatfilter enthalten müssen, der nach der Partitionierungsspalte filtert. Weitere Informationen finden Sie unter Anforderungen an Partitionsfilter festlegen. Der Standardwert ist Dieses Attribut entspricht dem Attribut timePartitioning.requirePartitionFilter der Tabellenressource. Dieses Attribut kann nur festgelegt werden, wenn die Tabelle partitioniert ist. |
kms_key_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut encryptionConfiguration.kmsKeyName der Tabellenressource. Weitere Informationen finden Sie unter Daten mit Cloud KMS-Schlüsseln schützen. |
friendly_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut friendlyName der Tabellenressource. |
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut description der Tabellenressource. |
labels |
|
Beispiel: Dieses Attribut entspricht dem Attribut labels der Tabellenressource. |
VALUE
ist ein konstanter Ausdruck, der nur Literale, Abfrageparameter und Skalarfunktionen enthält.
Der konstante Ausdruck darf Folgendes nicht enthalten:
- Einen Verweis auf eine Tabelle
- Unterabfragen oder SQL-Anweisungen wie
SELECT
,CREATE
oderUPDATE
- Benutzerdefinierte Funktionen, Aggregatfunktionen oder Analysefunktionen
- Die folgenden Skalarfunktionen:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
Wenn VALUE
als NULL
ausgewertet wird, wird die entsprechende Option NAME
in der CREATE TABLE
-Anweisung ignoriert.
column_option_list
Mit column_option_list
in column_schema
können Sie optionale Spalten- oder Feldoptionen angeben. Für Spalten- und Feldoptionen sind Syntax und Anforderungen identisch. Sie unterscheiden sich aber in den Listen für NAME
und VALUE
:
NAME |
VALUE |
Details |
---|---|---|
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut der Tabellenressource schema.fields[].description. |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create |
Das Dataset, in dem Sie die Tabelle erstellen. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigungen bigquery.tables.update
und bigquery.tables.updateData
.
Wenn die Klausel OPTIONS
Ablaufoptionen enthält, ist auch die Berechtigung bigquery.tables.delete
erforderlich.
Beispiele
Neue Tabellen erstellen
Im folgenden Beispiel wird in mydataset
eine partitionierte Tabelle mit dem Namen newtable
erstellt.
CREATE TABLE mydataset.newtable ( x INT64 OPTIONS(description="An optional INTEGER field"), y STRUCT< a ARRAY<STRING> OPTIONS(description="A repeated STRING field"), b BOOL > ) PARTITION BY _PARTITIONDATE OPTIONS( expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC", partition_expiration_days=1, description="a table that expires in 2025, with each partition living for 24 hours", labels=[("org_unit", "development")] )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.newtable`
anstelle von mydataset.newtable
lauten.
Wenn der Tabellenname im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: project_id:dataset.table
Die Tabelle verwendet den folgenden partition_expression
-Ausdruck zum Partitionieren der Tabelle: PARTITION BY _PARTITIONDATE
. Dieser Ausdruck partitioniert die Tabelle anhand des Datums in der Pseudospalte _PARTITIONDATE
.
Das Tabellenschema enthält zwei Spalten:
- x: Ganzzahlspalte mit der Beschreibung „An optional INTEGER field“ (Optionales INTEGER-Feld)
y: STRUCT mit zwei Spalten:
- a: Stringarray mit der Beschreibung „A repeated STRING field“ (Wiederkehrendes STRING-Feld)
- b: boolescher Wert
Die Tabellenoptionsliste gibt Folgendes an:
- Tabellenablaufzeit: 1. Januar 2025 um 00:00:00 UTC
- Partitionsablaufzeit: 1 Tag
- Beschreibung:
A table that expires in 2025
- Label:
org_unit = development
Neue Tabelle aus einer vorhandenen Tabelle erstellen
Im folgenden Beispiel wird eine Tabelle mit dem Namen top_words
in mydataset
aus einer Abfrage erstellt:
CREATE TABLE mydataset.top_words OPTIONS( description="Top ten words per Shakespeare corpus" ) AS SELECT corpus, ARRAY_AGG(STRUCT(word, word_count) ORDER BY word_count DESC LIMIT 10) AS top_words FROM bigquery-public-data.samples.shakespeare GROUP BY corpus;
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.top_words`
anstelle von mydataset.top_words
lauten.
Wenn der Tabellenname im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: project_id:dataset.table
Das Tabellenschema enthält zwei Spalten:
- corpus: Name eines Shakespeare-Korpus
top_words:
ARRAY
mitSTRUCT
-Werten, das zwei Felder enthält:word
(einSTRING
) undword_count
(einINT64
-Wert mit der Anzahl der Wörter)
Die Tabellenoptionsliste gibt Folgendes an:
- Beschreibung:
Top ten words per Shakespeare corpus
Tabelle nur erstellen, wenn die Tabelle nicht vorhanden ist
Im folgenden Beispiel wird nur dann in mydataset
eine Tabelle namens newtable
erstellt, wenn in mydataset
keine Tabelle mit dem Namen newtable
vorhanden ist. Ist der Tabellenname im Dataset vorhanden, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>) OPTIONS( expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC", description="a table that expires in 2025", labels=[("org_unit", "development")] )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.newtable`
anstelle von mydataset.newtable
lauten.
Das Tabellenschema enthält zwei Spalten:
- x: Ganzzahl
y: STRUCT-Wert mit a (Stringarray) und b (boolescher Wert)
Die Tabellenoptionsliste gibt Folgendes an:
- Ablaufzeit: 1. Januar 2025 um 00:00:00 UTC
- Beschreibung:
A table that expires in 2025
- Label:
org_unit = development
Tabellen erstellen oder ersetzen
Im folgenden Beispiel wird in mydataset
eine Tabelle mit dem Namen newtable
erstellt. Wenn newtable
bereits in mydataset
vorhanden ist, wird diese Tabelle mit einer leeren Tabelle überschrieben.
CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>) OPTIONS( expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC", description="a table that expires in 2025", labels=[("org_unit", "development")] )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.newtable`
anstelle von mydataset.newtable
lauten.
Das Tabellenschema enthält zwei Spalten:
- x: Ganzzahl
y: STRUCT-Wert mit a (Stringarray) und b (boolescher Wert)
Die Tabellenoptionsliste gibt Folgendes an:
- Ablaufzeit: 1. Januar 2025 um 00:00:00 UTC
- Beschreibung:
A table that expires in 2025
- Label:
org_unit = development
Tabellen mit REQUIRED
-Spalten erstellen
Im folgenden Beispiel wird in mydataset
eine Tabelle mit dem Namen newtable
erstellt. Der Modifikator NOT
NULL
in der Spaltendefinitionsliste einer CREATE TABLE
-Anweisung gibt an, dass eine Spalte oder ein Feld im Modus REQUIRED
erstellt wird.
CREATE TABLE mydataset.newtable ( x INT64 NOT NULL, y STRUCT< a ARRAY<STRING>, b BOOL NOT NULL, c FLOAT64 > NOT NULL, z STRING )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.newtable`
anstelle von mydataset.newtable
lauten.
Wenn der Tabellenname im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: project_id:dataset.table
Das Tabellenschema enthält drei Spalten:
- x:
REQUIRED
-Ganzzahl - y – Einen
REQUIRED
-STRUCT-Wert mit a (ein Stringarray), b (ein boolescherREQUIRED
-Wert) und c (eineNULLABLE
-Gleitkommazahl) z:
NULLABLE
-String
Tabelle mit Sortierungsunterstützung erstellen
In den folgenden Beispielen wird eine Tabelle mit dem Namen newtable
in mydataset
mit den Spalten a
, b
, c
und einem Struct mit den Feldern x
und y
erstellt.
Alle Spaltenschemas vom Typ STRING
in dieser Tabelle werden mit 'und:ci'
sortiert:
CREATE TABLE mydataset.newtable ( a STRING, b STRING, c STRUCT< x FLOAT64 y ARRAY<STRING> > ) DEFAULT COLLATE 'und:ci';
Nur b
und y
werden mit 'und:ci'
sortiert:
CREATE TABLE mydataset.newtable ( a STRING, b STRING COLLATE 'und:ci', c STRUCT< x FLOAT64 y ARRAY<STRING COLLATE 'und:ci'> > );
Tabelle mit parametrisierten Datentypen erstellen
Im folgenden Beispiel wird in mydataset
eine Tabelle mit dem Namen newtable
erstellt. Die Parameter in Klammern geben an, dass die Spalte einen parametrisierten Datentyp enthält. Weitere Informationen zu parametrisierten Typen finden Sie unter Parametrisierte Datentypen.
CREATE TABLE mydataset.newtable ( x STRING(10), y STRUCT< a ARRAY<BYTES(5)>, b NUMERIC(15, 2), c FLOAT64 >, z BIGNUMERIC(35) )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Anstelle von mydataset.newtable
sollte der Tabellen-Qualifier `myproject.mydataset.newtable`
lauten.
Wenn der Tabellenname im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: project_id:dataset.table
Das Tabellenschema enthält drei Spalten:
- x: Ein parametrisierter String mit einer maximalen Länge von 10
- y: Ein STRUCT-Wert mit a (einem Array mit parametrisierten Bytes mit einer maximalen Länge von 5), b (ein parametrisiertes NUMERIC mit einer maximalen Genauigkeit von 15 und einer maximalen Skalierung von 2) und c (einer Gleitkommazahl)
- z: Ein parametrisierter BIGNUMERIC mit einer maximalen Genauigkeit von 35 und einer maximalen Skalierung von 0
Partitionierte Tabelle erstellen
Im folgenden Beispiel wird in mydataset
mithilfe einer DATE
-Spalte eine partitionierte Tabelle mit dem Namen newtable
erstellt.
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date OPTIONS( partition_expiration_days=3, description="a table partitioned by transaction_date" )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.newtable`
anstelle von mydataset.newtable
lauten.
Das Tabellenschema enthält zwei Spalten:
- transaction_id: Ganzzahl
- transaction_date: Datum
Die Tabellenoptionsliste gibt Folgendes an:
- Partitionsablauf: drei Tage
- Beschreibung:
A table partitioned by transaction_date
Partitionierte Tabelle aus dem Ergebnis einer Abfrage erstellen
Im folgenden Beispiel wird in mydataset
mithilfe einer DATE
-Spalte eine partitionierte Tabelle mit dem Namen days_with_rain
erstellt.
CREATE TABLE mydataset.days_with_rain PARTITION BY date OPTIONS ( partition_expiration_days=365, description="weather stations with precipitation, partitioned by day" ) AS SELECT DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date, (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations WHERE stations.usaf = stn) AS station_name, -- Stations can have multiple names prcp FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather WHERE prcp != 99.9 -- Filter unknown values AND prcp > 0 -- Filter stations/days with no precipitation
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn die project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.days_with_rain`
anstelle von mydataset.days_with_rain
lauten.
Das Tabellenschema enthält zwei Spalten:
- date: Datum (
DATE
) der Datenerfassung - station_name: Name der Wetterstation als
STRING
- prcp: Niederschlagsmenge in Zoll als
FLOAT64
-Gleitkommazahl
Die Tabellenoptionsliste gibt Folgendes an:
- Ablauf der Partition: ein Jahr
- Beschreibung:
Weather stations with precipitation, partitioned by day
Geclusterte Tabellen erstellen
Beispiel 1
Im folgenden Beispiel wird in mydataset
eine geclusterte Tabelle namens myclusteredtable
erstellt. Die Tabelle ist eine partitionierte Tabelle, die nach einer Spalte vom Typ TIMESTAMP
partitioniert und nach einer STRING
-Spalte namens customer_id
geclustert wird.
CREATE TABLE mydataset.myclusteredtable ( timestamp TIMESTAMP, customer_id STRING, transaction_amount NUMERIC ) PARTITION BY DATE(timestamp) CLUSTER BY customer_id OPTIONS ( partition_expiration_days=3, description="a table clustered by customer_id" )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.myclusteredtable`
anstelle von mydataset.myclusteredtable
lauten.
Das Tabellenschema enthält drei Spalten:
- timestamp: Zeitpunkt der Datenerfassung (Typ
TIMESTAMP
) - customer_id: Kundennummer (Typ
STRING
) - transaction_amount: Anzahl der Transaktionen (Typ
NUMERIC
)
Die Tabellenoptionsliste gibt Folgendes an:
- Ablauf der Partition: 3 Tage
- Beschreibung:
A table clustered by customer_id
Beispiel 2
Im folgenden Beispiel wird in mydataset
eine geclusterte Tabelle namens myclusteredtable
erstellt. Die Tabelle ist eine nach Aufnahmezeit partitionierte Tabelle.
CREATE TABLE mydataset.myclusteredtable ( customer_id STRING, transaction_amount NUMERIC ) PARTITION BY DATE(_PARTITIONTIME) CLUSTER BY customer_id OPTIONS ( partition_expiration_days=3, description="a table clustered by customer_id" )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.myclusteredtable`
anstelle von mydataset.myclusteredtable
lauten.
Das Tabellenschema enthält zwei Spalten:
- customer_id: Kundennummer (Typ
STRING
) - transaction_amount: Anzahl der Transaktionen (Typ
NUMERIC
)
Die Tabellenoptionsliste gibt Folgendes an:
- Ablauf der Partition: 3 Tage
- Beschreibung:
A table clustered by customer_id
Beispiel 3
Im folgenden Beispiel wird in mydataset
eine geclusterte Tabelle namens myclusteredtable
erstellt. Die Tabelle ist nicht partitioniert.
CREATE TABLE mydataset.myclusteredtable ( customer_id STRING, transaction_amount NUMERIC ) CLUSTER BY customer_id OPTIONS ( description="a table clustered by customer_id" )
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.myclusteredtable`
anstelle von mydataset.myclusteredtable
lauten.
Das Tabellenschema enthält zwei Spalten:
- customer_id: Kundennummer (Typ
STRING
) - transaction_amount: Anzahl der Transaktionen (Typ
NUMERIC
)
Die Tabellenoptionsliste gibt Folgendes an:
- Beschreibung:
A table clustered by customer_id
Geclusterte Tabellen aus dem Ergebnis einer Abfrage erstellen
Beispiel 1
Im folgenden Beispiel wird mithilfe des Ergebnisses einer Abfrage in mydataset
eine geclusterte Tabelle namens myclusteredtable
erstellt. Die Tabelle ist eine partitionierte Tabelle, die nach einer Spalte vom Typ TIMESTAMP
partitioniert ist.
CREATE TABLE mydataset.myclusteredtable ( timestamp TIMESTAMP, customer_id STRING, transaction_amount NUMERIC ) PARTITION BY DATE(timestamp) CLUSTER BY customer_id OPTIONS ( partition_expiration_days=3, description="a table clustered by customer_id" ) AS SELECT * FROM mydataset.myothertable
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.myclusteredtable`
anstelle von mydataset.myclusteredtable
lauten.
Das Tabellenschema enthält drei Spalten:
- timestamp: Zeitpunkt der Datenerfassung (Typ
TIMESTAMP
) - customer_id: Kundennummer (Typ
STRING
) - transaction_amount: Anzahl der Transaktionen (Typ
NUMERIC
)
Die Tabellenoptionsliste gibt Folgendes an:
- Ablauf der Partition: 3 Tage
- Beschreibung:
A table clustered by customer_id
Beispiel 2
Im folgenden Beispiel wird mithilfe des Ergebnisses einer Abfrage in mydataset
eine geclusterte Tabelle namens myclusteredtable
erstellt. Die Tabelle ist nicht partitioniert.
CREATE TABLE mydataset.myclusteredtable ( customer_id STRING, transaction_amount NUMERIC ) CLUSTER BY customer_id OPTIONS ( description="a table clustered by customer_id" ) AS SELECT * FROM mydataset.myothertable
Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Dataset-Namen in der Beispiel-SQL eine Projekt-ID voran und schließen Sie den Namen in Backticks ein, wenn project_id
Sonderzeichen enthält: `project_id.dataset.table`
. Daher kann der Tabellen-Qualifier `myproject.mydataset.myclusteredtable`
anstelle von mydataset.myclusteredtable
lauten.
Das Tabellenschema enthält zwei Spalten:
- customer_id: Kundennummer (Typ
STRING
) - transaction_amount: Anzahl der Transaktionen (Typ
NUMERIC
)
Die Tabellenoptionsliste gibt Folgendes an:
- Beschreibung:
A table clustered by customer_id
Temporäre Tabelle erstellen
Im folgenden Beispiel wird eine temporäre Tabelle mit dem Namen Example
erstellt und Werte in diese Tabelle eingefügt.
CREATE TEMP TABLE Example
(
x INT64,
y STRING
);
INSERT INTO Example
VALUES (5, 'foo');
INSERT INTO Example
VALUES (6, 'bar');
SELECT *
FROM Example;
Dieses Skript gibt Folgendes zurück:
+-----+---+-----+
| Row | x | y |
+-----+---|-----+
| 1 | 5 | foo |
| 2 | 6 | bar |
+-----+---|-----+
CREATE TABLE LIKE
-Anweisung
Erstellt eine neue Tabelle mit allen Metadaten einer anderen Tabelle.
Syntax
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] table_name LIKE [[project_name.]dataset_name.]source_table_name ... [OPTIONS(table_option_list)]
Details
Abgesehen von der Verwendung der LIKE
-Klausel anstelle einer Spaltenliste ist die Syntax mit der CREATE TABLE
-Syntax identisch.
Mit der CREATE TABLE LIKE
-Anweisung werden nur die Metadaten der Quelltabelle kopiert.
Sie können die as query_statement
-Klausel verwenden, um Daten in die neue Tabelle aufzunehmen.
Die neue Tabelle hat nach der Erstellung keine Beziehung mehr zur Quelltabelle. Daher werden Änderungen an der Quelltabelle nicht an die neue Tabelle weitergegeben.
Standardmäßig übernimmt die neue Tabelle Partitionierungs-, Clustering- und Optionsmetadaten aus der Quelltabelle. Sie können Metadaten in der neuen Tabelle anpassen, indem Sie die optionalen Klauseln in der SQL-Anweisung verwenden. Wenn Sie beispielsweise andere Optionen für die neue Tabelle angeben möchten, fügen Sie die OPTIONS
-Klausel mit einer Liste von Optionen und Werten ein. Dieses Verhalten entspricht dem von ALTER TABLE SET OPTIONS
.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create |
Das Dataset, in dem Sie die Tabelle erstellen. |
bigquery.tables.get |
Die Quelltabelle. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigungen bigquery.tables.update
und bigquery.tables.updateData
.
Wenn die Klausel OPTIONS
Ablaufoptionen enthält, ist auch die Berechtigung bigquery.tables.delete
erforderlich.
Beispiele
Beispiel 1
Im folgenden Beispiel wird in mydataset
eine neue Tabelle mit dem Namen newtable
mit denselben Metadaten wie bei sourcetable
erstellt:
CREATE TABLE mydataset.newtable LIKE mydataset.sourcetable
Beispiel 2
Im folgenden Beispiel wird in mydataset
eine neue Tabelle mit dem Namen newtable
mit denselben Metadaten wie bei sourcetable
und den Daten aus der Anweisung SELECT
erstellt:
CREATE TABLE mydataset.newtable LIKE mydataset.sourcetable AS SELECT * FROM mydataset.myothertable
CREATE TABLE COPY
-Anweisung
Erstellt eine Tabelle mit denselben Metadaten und Daten wie eine andere Tabelle. Die Quelltabelle kann eine Tabelle, ein Tabellenklon oder ein Tabellen-Snapshot sein.
Syntax
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] table_name COPY source_table_name ... [OPTIONS(table_option_list)]
Details
Abgesehen von der Verwendung der COPY
-Klausel anstelle einer Spaltenliste ist die Syntax mit der CREATE TABLE
-Syntax identisch.
Mit der CREATE TABLE COPY
-Anweisung werden sowohl die Metadaten als auch die Daten aus der Quelltabelle kopiert.
Die Partitionierung und das Clustering werden von der neuen Tabelle aus der Quelltabelle übernommen. Standardmäßig werden die Metadaten der Tabellenoptionen aus der Quelltabelle ebenfalls übernommen. Sie können die Tabellenoptionen jedoch mit der OPTIONS
-Klausel überschreiben. Das Verhalten entspricht dem Ausführen von ALTER TABLE SET OPTIONS
nach dem Kopieren der Tabelle.
Die neue Tabelle hat nach der Erstellung keine Beziehung zur Quelltabelle. Änderungen an der Quelltabelle werden nicht an die neue Tabelle weitergegeben.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create |
Das Dataset, in dem Sie den Tabellen-Snapshot erstellen. |
bigquery.tables.get |
Die Quelltabelle. |
bigquery.tables.getData |
Die Quelltabelle. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigungen bigquery.tables.update
und bigquery.tables.updateData
.
Wenn die Klausel OPTIONS
Ablaufoptionen enthält, ist auch die Berechtigung bigquery.tables.delete
erforderlich.
CREATE SNAPSHOT TABLE
-Anweisung
Erstellt einen Tabellen-Snapshot basierend auf einer Quelltabelle. Die Quelltabelle kann eine Tabelle, ein Tabellenklon oder ein Tabellen-Snapshot sein.
Syntax
CREATE SNAPSHOT TABLE [ IF NOT EXISTS ] table_snapshot_name CLONE source_table_name [FOR SYSTEM_TIME AS OF time_expression] [OPTIONS(snapshot_option_list)]
Argumente
IF NOT EXISTS
: Wenn ein Tabellen-Snapshot oder eine andere Tabellenressource mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen.table_snapshot_name
: Der Name des Tabellen-Snapshots, den Sie erstellen möchten. Der Name des Tabellen-Snapshots muss pro Dataset eindeutig sein. Siehe Tabellenpfadsyntax.source_table_name
: Der Name der Tabelle, die Sie erstellen möchten, oder des Tabellen-Snapshots, den Sie kopieren möchten. Siehe Tabellenpfadsyntax.Wenn die Quelltabelle eine Standardtabelle ist, erstellt BigQuery einen Tabellen-Snapshot der Quelltabelle. Wenn die Quelltabelle ein Tabellen-Snapshot ist, erstellt BigQuery eine Kopie des Tabellen-Snapshots.
FOR SYSTEM_TIME AS OF
: Ermöglicht die Auswahl der Version der Tabelle, die zu dem durchtimestamp_expression
angegebenen Zeitpunkt aktuell war. Die Klausel kann nur verwendet werden, wenn ein Snapshot einer Tabelle erstellt wird. Sie kann nicht beim Erstellen einer Kopie eines Tabellen-Snapshots verwendet werden.snapshot_option_list
: Zusätzliche Optionen zum Erstellen von Tabellen-Snapshots wie ein Label und eine Ablaufzeit.
Details
Für CREATE SNAPSHOT TABLE
-Anweisungen gelten die folgenden Regeln:
- Nur eine
CREATE
-Anweisung ist zulässig. - Folgende Optionen sind für die Quelltabelle zulässig:
- Eine Tabelle
- Ein Tabellenklon
- Ein Tabellen-Snapshot
- Die
FOR SYSTEM_TIME AS OF
-Klausel kann nur verwendet werden, wenn ein Snapshot einer Tabelle oder eines Tabellenklons erstellt wird. Sie kann nicht beim Erstellen einer Kopie eines Tabellen-Snapshots verwendet werden.
snapshot_option_list
Mit der Optionsliste können Sie Tabellen-Snapshot-Optionen wie ein Label und eine Ablaufzeit festlegen. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.
Geben Sie eine Liste mit Tabellen-Snapshot-Optionen im folgenden Format an:
NAME=VALUE, ...
NAME
und VALUE
müssen eine der folgenden Kombinationen sein:
NAME |
VALUE |
Details |
---|---|---|
expiration_timestamp |
TIMESTAMP |
Beispiel: Dieses Attribut entspricht dem Attribut |
friendly_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut |
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut |
labels |
|
Beispiel: Dieses Attribut entspricht dem Attribut |
VALUE
ist ein konstanter Ausdruck, der nur Literale, Abfrageparameter und Skalarfunktionen enthält.
Der konstante Ausdruck darf Folgendes nicht enthalten:
- Einen Verweis auf eine Tabelle
- Unterabfragen – SQL-Anweisungen wie
SELECT
,CREATE
undUPDATE
- Benutzerdefinierte Funktionen, Aggregatfunktionen oder Analysefunktionen
- Die folgenden Skalarfunktionen:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
Wenn VALUE
als NULL
ausgewertet wird, wird die entsprechende Option NAME
in der CREATE SNAPSHOT TABLE
-Anweisung ignoriert.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create
|
Das Dataset, in dem Sie den Tabellen-Snapshot erstellen. |
bigquery.tables.createSnapshot |
Die Quelltabelle. |
bigquery.tables.get |
Die Quelltabelle. |
bigquery.tables.getData |
Die Quelltabelle. |
Beispiele
Tabellen-Snapshot erstellen: Fehler, wenn er bereits vorhanden ist
Im folgenden Beispiel wird ein Tabellen-Snapshot der Tabelle myproject.mydataset.mytable
erstellt. Der Tabellen-Snapshot wird im Dataset mydataset
erstellt und heißt mytablesnapshot
:
CREATE SNAPSHOT TABLE `myproject.mydataset.mytablesnapshot` CLONE `myproject.mydataset.mytable` OPTIONS( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR), friendly_name="my_table_snapshot", description="A table snapshot that expires in 2 days", labels=[("org_unit", "development")] )
Wenn der Tabellen-Snapshot-Name bereits im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: myproject.mydataset.mytablesnapshot
In der Liste der Tabellen-Snapshot-Optionen ist Folgendes angegeben:
- Ablaufzeit: 48 Stunden nach der Erstellung des Tabellen-Snapshots
- Anzeigename:
my_table_snapshot
- Beschreibung:
A table snapshot that expires in 2 days
- Label:
org_unit = development
Tabellen-Snapshot erstellen: Ignorieren, wenn er bereits vorhanden ist
Im folgenden Beispiel wird ein Tabellen-Snapshot der Tabelle myproject.mydataset.mytable
erstellt. Der Tabellen-Snapshot wird im Dataset mydataset
erstellt und heißt mytablesnapshot
:
CREATE SNAPSHOT TABLE IF NOT EXISTS `myproject.mydataset.mytablesnapshot` CLONE `myproject.mydataset.mytable` OPTIONS( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR), friendly_name="my_table_snapshot", description="A table snapshot that expires in 2 days" labels=[("org_unit", "development")] )
In der Liste der Tabellen-Snapshot-Optionen ist Folgendes angegeben:
- Ablaufzeit: 48 Stunden nach der Erstellung des Tabellen-Snapshots
- Anzeigename:
my_table_snapshot
- Beschreibung:
A table snapshot that expires in 2 days
- Label:
org_unit = development
Wenn der Name des Tabellen-Snapshots bereits im Dataset vorhanden ist, wird keine Aktion ausgeführt und kein Fehler zurückgegeben.
Informationen zum Wiederherstellen von Tabellen-Snapshots finden Sie unter CREATE TABLE CLONE
.
Informationen zum Entfernen von Tabellen-Snapshots finden Sie unter DROP SNAPSHOT TABLE
.
CREATE TABLE CLONE
-Anweisung
Erstellt einen Tabellenklon auf Basis einer Quelltabelle. Die Quelltabelle kann eine Tabelle, ein Tabellenklon oder ein Tabellen-Snapshot sein.
Syntax
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] destination_table_name CLONE source_table_name [FOR SYSTEM_TIME AS OF time_expression] ... [OPTIONS(table_option_list)]
Details
Abgesehen von der Verwendung der CLONE
-Klausel anstelle einer Spaltenliste ist die Syntax mit der CREATE TABLE
-Syntax identisch.
Argumente
OR REPLACE
: Ersetzt eine Tabelle mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.IF NOT EXISTS
: Wenn der angegebene Zieltabellenname bereits vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.
destination_table_name
ist der Name der Tabelle, die Sie erstellen möchten.
Der Tabellenname muss pro Dataset eindeutig sein. Der Name des Datasets kann Folgendes enthalten:
- Bis zu 1.024 Zeichen
- Buchstaben (groß- oder kleingeschrieben), Ziffern und Unterstriche
Mit OPTIONS(table_option_list)
können Sie zusätzliche Optionen zum Erstellen von Ansichten angeben, beispielsweise ein Label und eine Ablaufzeit.
source_table_name
ist der Name der Quelltabelle.
Für CREATE TABLE CLONE
-Anweisungen gelten die folgenden Regeln:
- Nur eine
CREATE
-Anweisung ist zulässig. - Die geklonte Tabelle muss eine Tabelle, ein Tabellenklon oder ein Tabellen-Snapshot sein.
OPTIONS
CREATE TABLE CLONE
-Optionen sind dieselben wie CREATE TABLE
-Optionen.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create |
Das Dataset, in dem Sie den Tabellenklon erstellen. |
bigquery.tables.get |
Die Quelltabelle. |
bigquery.tables.getData |
Die Quelltabelle. |
bigquery.tables.restoreSnapshot |
Die Quelltabelle (nur erforderlich, wenn die Quelltabelle ein Tabellen-Snapshot ist). |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigungen bigquery.tables.update
und bigquery.tables.updateData
.
Wenn die Klausel OPTIONS
Ablaufoptionen enthält, ist auch die Berechtigung bigquery.tables.delete
erforderlich.
Beispiele
Tabellen-Snapshot wiederherstellen: Fehler, wenn die Zieltabelle bereits vorhanden ist
Im folgenden Beispiel wird die Tabelle myproject.mydataset.mytable
aus dem Tabellen-Snapshot myproject.mydataset.mytablesnapshot
erstellt:
CREATE TABLE `myproject.mydataset.mytable` CLONE `myproject.mydataset.mytablesnapshot` OPTIONS( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 365 DAY), friendly_name="my_table", description="A table that expires in 1 year", labels=[("org_unit", "development")] )
Wenn der Tabellenname im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: myproject.mydataset.mytable.
Die Tabellenoptionsliste gibt Folgendes an:
- Ablaufzeit: 365 Tage nach dem Erstellen der Tabelle
- Anzeigename:
my_table
- Beschreibung:
A table that expires in 1 year
- Label:
org_unit = development
Klon einer Tabelle erstellen: Ignorieren, wenn die Zieltabelle bereits vorhanden ist
Im folgenden Beispiel wird der Tabellenklon myproject.mydataset.mytableclone
anhand der Tabelle myproject.mydataset.mytable
erstellt:
CREATE TABLE IF NOT EXISTS `myproject.mydataset.mytableclone` CLONE `myproject.mydataset.mytable` OPTIONS( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 365 DAY), friendly_name="my_table", description="A table that expires in 1 year", labels=[("org_unit", "development")] )
Die Tabellenoptionsliste gibt Folgendes an:
- Ablaufzeit: 365 Tage nach dem Erstellen der Tabelle
- Anzeigename:
my_table
- Beschreibung:
A table that expires in 1 year
- Label:
org_unit = development
Ist der Tabellenname im Dataset vorhanden, wird keine Aktion ausgeführt und kein Fehler zurückgegeben.
Informationen zum Erstellen einer Kopie einer Tabelle finden Sie unter CREATE TABLE COPY
.
Informationen zum Erstellen eines Snapshots einer Tabelle finden Sie unter CREATE SNAPSHOT TABLE
.
CREATE VIEW
-Anweisung
: Erstellt eine neue Ansicht.
Syntax
CREATE [ OR REPLACE ] VIEW [ IF NOT EXISTS ] view_name [(view_column_name_list)] [OPTIONS(view_option_list)] AS query_expression
Argumente
OR REPLACE
: Ersetzt jede Ansicht mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.IF NOT EXISTS
: Wenn eine Ansicht oder eine andere Tabellenressource mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.view_name
: Der Name der Ansicht, die Sie erstellen möchten. Siehe Tabellenpfadsyntax.Mit
view_column_name_list
: Ermöglicht Ihnen die explizite Angabe der Spaltennamen der Ansicht. Dabei kann es sich um Aliasse für die Spaltennamen in der zugrunde liegenden SQL-Abfrage handeln.view_option_list
: Zusätzliche Optionen zum Erstellen von Ansichten, z. B. ein Label und eine Ablaufzeit.query_expression
: Der Standard-SQL-Abfrageausdruck, der zur Definition der Ansicht verwendet wird.
Details
Für CREATE VIEW
-Anweisungen gelten die folgenden Regeln:
- Nur eine
CREATE
-Anweisung ist zulässig.
view_column_name_list
Die Liste der Spaltennamen für die Ansicht ist optional. Die Namen dürfen nur einmal vorkommen, müssen aber nicht mit den Spaltennamen der zugrunde liegenden SQL-Abfrage übereinstimmen. Beispiel: Ihre Ansicht wird mit der folgenden Anweisung erstellt:
CREATE VIEW mydataset.age_groups(age, count) AS SELECT age, COUNT(*)
FROM mydataset.people
group by age;
Dann können Sie sie folgendermaßen abfragen:
SELECT age, count from mydataset.age_groups;
Die Anzahl der Spalten in der Liste der Spaltennamen muss mit der Anzahl der Spalten in der zugrunde liegenden SQL-Abfrage übereinstimmen. Wenn die Spalten in der Tabelle der zugrunde liegenden SQL-Abfrage hinzugefügt oder verworfen werden, ist die Ansicht ungültig und muss neu erstellt werden. Beispiel: Wenn die Spalte age
aus der Tabelle mydataset.people
entfernt wird, wird die im vorherigen Beispiel erstellte Ansicht ungültig.
view_option_list
Mit der Optionsliste können Sie Ansichtsoptionen wie ein Label und eine Ablaufzeit festlegen. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.
Die Liste der Ansichtsoptionen müssen Sie im folgenden Format angeben:
NAME=VALUE, ...
NAME
und VALUE
müssen mit einer der folgenden Varianten kombiniert werden:
NAME |
VALUE |
Details |
---|---|---|
expiration_timestamp |
TIMESTAMP |
Beispiel: Dieses Attribut entspricht dem Attribut expirationTime der Tabellenressource. |
friendly_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut friendlyName der Tabellenressource. |
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut description der Tabellenressource. |
labels |
|
Beispiel: Dieses Attribut entspricht dem Attribut labels der Tabellenressource. |
VALUE
ist ein konstanter Ausdruck, der nur Literale, Abfrageparameter und Skalarfunktionen enthält.
Der konstante Ausdruck darf Folgendes nicht enthalten:
- Einen Verweis auf eine Tabelle
- Unterabfragen oder SQL-Anweisungen wie
SELECT
,CREATE
oderUPDATE
- Benutzerdefinierte Funktionen, Aggregatfunktionen oder Analysefunktionen
- Die folgenden Skalarfunktionen:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
Wenn VALUE
als NULL
ausgewertet wird, wird die entsprechende Option NAME
in der CREATE VIEW
-Anweisung ignoriert.
Standardprojekt im Ansichtstext
Wenn die Ansicht in dem Projekt erstellt wird, das zum Ausführen der CREATE VIEW
-Anweisung verwendet wird, kann der Ansichtstext query_expression
auf Entitäten verweisen, ohne das Projekt anzugeben. Das Standardprojekt ist das Projekt, zu dem die Ansicht gehört. Betrachten Sie die folgende Beispielabfrage.
CREATE VIEW myProject.myDataset.myView AS SELECT * FROM anotherDataset.myTable;
Nachdem Sie die obige CREATE VIEW
-Abfrage im Projekt myProject
ausgeführt haben, können Sie die Abfrage SELECT * FROM myProject.myDataset.myView
ausführen. Unabhängig davon, in welchem Projekt Sie diese SELECT
-Abfrage ausführen, wird die referenzierte Tabelle anotherDataset.myTable
immer für das Projekt myProject
aufgelöst.
Wenn die Ansicht nicht in dem Projekt erstellt wird, das zum Ausführen der CREATE VIEW
-Anweisung verwendet wird, müssen alle Verweise im Ansichtstext query_expression
mit Projekt-IDs qualifiziert sein. Die vorherige Beispielabfrage CREATE VIEW
ist beispielsweise ungültig, wenn sie in einem anderen Projekt als myProject
ausgeführt wird.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create |
Das Dataset, in dem Sie die Ansicht erstellen. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigung bigquery.tables.update
.
Wenn die Klausel OPTIONS
eine Ablaufzeit enthält, ist auch die Berechtigung bigquery.tables.delete
erforderlich.
Beispiele
Neue Ansicht erstellen
Im folgenden Beispiel wird in mydataset
eine Ansicht mit dem Namen newview
erstellt.
CREATE VIEW `myproject.mydataset.newview` OPTIONS( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR), friendly_name="newview", description="a view that expires in 2 days", labels=[("org_unit", "development")] ) AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Wenn der Ansichtsname im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: project_id:dataset.table
Die Ansicht wird mit der folgenden Abfrage in Standard-SQL definiert:
SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Die Liste der Ansichtsoptionen legt Folgendes fest:
- Ablaufzeit: 48 Stunden ab dem Zeitpunkt, an dem die Ansicht erstellt wird
- Anzeigename:
newview
- Beschreibung:
A view that expires in 2 days
- Label:
org_unit = development
Ansicht nur erstellen, wenn sie nicht vorhanden ist
Im folgenden Beispiel wird nur dann in mydataset
eine Ansicht mit dem Namen newview
erstellt, wenn in mydataset
keine Ansicht mit dem Namen newview
vorhanden ist. Wenn der Ansichtsname im Dataset vorhanden ist, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview` OPTIONS( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR), friendly_name="newview", description="a view that expires in 2 days", labels=[("org_unit", "development")] ) AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Die Ansicht wird mit der folgenden Abfrage in Standard-SQL definiert:
SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Die Liste der Ansichtsoptionen legt Folgendes fest:
- Ablaufzeit: 48 Stunden ab dem Zeitpunkt, an dem die Ansicht erstellt wird
- Anzeigename:
newview
- Beschreibung:
A view that expires in 2 days
- Label:
org_unit = development
Ansicht erstellen oder ersetzen
Im folgenden Beispiel wird in mydataset
eine Ansicht mit dem Namen newview
erstellt. Wenn newview
bereits in mydataset
vorhanden ist, wird diese mit dem angegebenen Abfrageausdruck überschrieben.
CREATE OR REPLACE VIEW `myproject.mydataset.newview` OPTIONS( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR), friendly_name="newview", description="a view that expires in 2 days", labels=[("org_unit", "development")] ) AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Die Ansicht wird mit der folgenden Abfrage in Standard-SQL definiert:
SELECT column_1, column_2, column_3 FROM
myproject.mydataset.mytable
Die Liste der Ansichtsoptionen legt Folgendes fest:
- Ablaufzeit: 48 Stunden ab dem Zeitpunkt, an dem die Ansicht erstellt wird
- Anzeigename:
newview
- Beschreibung:
A view that expires in 2 days
- Label:
org_unit = development
CREATE MATERIALIZED VIEW
-Anweisung
: Erstellt eine neue materialisierte Ansicht.
Syntax
CREATE [ OR REPLACE ] MATERIALIZED VIEW [ IF NOT EXISTS ] materialized_view_name [PARTITION BY partition_expression] [CLUSTER BY clustering_column_list] [OPTIONS(materialized_view_option_list)] AS query_expression
Argumente
OR REPLACE
: Ersetzt alle materialisierten Ansichten mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.IF NOT EXISTS
: Wenn eine materialisierte Ansicht oder eine andere Tabellenressource mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.materialized_view_name
: Der Name der materialisierten Ansicht, die Sie erstellen. Siehe Tabellenpfadsyntax.Wenn
project_name
im Namen der materialisierten Ansicht weggelassen wird oder er mit dem Projekt übereinstimmt, das diese DDL-Abfrage ausführt, wird letzteres auch als Standardprojekt für Verweise auf Tabellen, Funktionen und andere Ressourcen inquery_expression
verwendet. Das Standardprojekt der Referenzen ist festgelegt und hängt nicht von den zukünftigen Abfragen ab, die die neue materialisierte Ansicht aufrufen. Andernfalls müssen alle Verweise inquery_expression
mit Projektnamen qualifiziert sein.Der Name der materialisierten Ansicht muss pro Dataset eindeutig sein.
partition_expression
: Ein Ausdruck, der festlegt, wie die Tabelle partitioniert wird. Eine materialisierte Ansicht kann nur auf die gleiche Weise wie die Tabelle inquery expression
(die Basistabelle) partitioniert werden.clustering_column_list
: Eine durch Kommas getrennte Liste mit Spaltenreferenzen, die festlegen, wie die materialisierte Ansicht gruppiert wird.Mit
materialized_view_option_list
** können Sie zusätzliche Optionen für die materialisierte Ansicht festlegen, beispielsweise ob die Aktualisierung aktiviert ist, das Aktualisierungsintervall, ein Label und eine Ablaufzeit.query_expression
: Der Standard-SQL-Abfrageausdruck, der zur Definition der materialisierten Ansicht verwendet wird.
Details
Für CREATE MATERIALIZED VIEW
-Anweisungen gelten die folgenden Regeln:
- Nur eine
CREATE
-Anweisung ist zulässig.
Standardprojekt im Text der materialisierten Ansicht
Wenn die materialisierte Ansicht in dem Projekt erstellt wird, das zum Ausführen der CREATE MATERIALIZED VIEW
-Anweisung verwendet wird, kann der Text der materialisierten Ansicht query_expression
auf Entitäten verweisen, ohne das Projekt anzugeben. Das Standardprojekt ist das Projekt, zu dem die materialisierte Ansicht gehört. Betrachten Sie die folgende Beispielabfrage.
CREATE MATERIALIZED VIEW myProject.myDataset.myView AS SELECT * FROM anotherDataset.myTable;
Nachdem Sie die obige CREATE MATERIALIZED VIEW
-Abfrage im Projekt myProject
ausgeführt haben, können Sie die Abfrage SELECT * FROM myProject.myDataset.myView
ausführen. Unabhängig davon, in welchem Projekt Sie diese SELECT
-Abfrage ausführen, wird die referenzierte Tabelle anotherDataset.myTable
immer für das Projekt myProject
aufgelöst.
Wenn die materialisierte Ansicht nicht in dem Projekt erstellt wird, das zum Ausführen der CREATE VIEW
-Anweisung verwendet wird, müssen alle Verweise im Text der materialisierten Ansicht query_expression
mit Projekt-IDs qualifiziert sein. Die vorherige Beispielabfrage CREATE MATERIALIZED VIEW
ist beispielsweise ungültig, wenn sie in einem anderen Projekt als myProject
ausgeführt wird.
materialized_view_option_list
In der Optionsliste können Sie Optionen für die materialisierte Ansicht festlegen, beispielsweise ob die Aktualisierung aktiviert ist, das Aktualisierungsintervall, ein Label und eine Ablaufzeit. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.
Geben Sie eine Optionsliste für die materialisierte Ansicht im folgenden Format an:
NAME=VALUE, ...
NAME
und VALUE
müssen mit einer der folgenden Varianten kombiniert werden:
NAME |
VALUE |
Details |
---|---|---|
enable_refresh |
BOOLEAN |
Beispiel: |
refresh_interval_minutes |
FLOAT64 |
Beispiel: |
expiration_timestamp |
TIMESTAMP |
Beispiel: Dieses Attribut entspricht dem Attribut expirationTime der Tabellenressource. |
friendly_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut friendlyName der Tabellenressource. |
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut description der Tabellenressource. |
labels |
|
Beispiel: Dieses Attribut entspricht dem Attribut labels der Tabellenressource. |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create
|
Das Dataset, in dem Sie die materialisierte Ansicht erstellen. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigung bigquery.tables.update
.
Wenn die Klausel OPTIONS
Ablaufoptionen enthält, ist auch die Berechtigung bigquery.tables.delete
erforderlich.
Beispiele
Eine neue materialisierte Ansicht erstellen
Im folgenden Beispiel wird eine materialisierte Ansicht mit dem Namen new_mv
in mydataset
erstellt.
CREATE MATERIALIZED VIEW `myproject.mydataset.new_mv`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
friendly_name="new_mv",
description="a materialized view that expires in 2 days",
labels=[("org_unit", "development")],
enable_refresh=true,
refresh_interval_minutes=20
)
AS SELECT column_1, SUM(column_2) AS sum_2, AVG(column_3) AS avg_3
FROM `myproject.mydataset.mytable`
GROUP BY column_1
Wenn der Name der materialisierten Ansicht im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Already Exists: project_id:dataset.materialized_view
Wenn Sie eine DDL-Anweisung zum Erstellen einer materialisierten Ansicht verwenden, müssen Sie das Projekt, das Dataset und die materialisierte Ansicht im folgenden Format angeben: `project_id.dataset.materialized_view`
(einschließlich der Backticks, wenn project_id
Sonderzeichen enthält); zum Beispiel `myproject.mydataset.new_mv`
.
Die materialisierte Ansicht wird mit der folgenden Abfrage in Standard-SQL definiert:
SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Die Optionsliste für die materialisierte Ansicht legt Folgendes fest:
- Ablaufzeit: 48 Stunden ab dem Zeitpunkt, an dem die materialisierte Ansicht erstellt wird
- Anzeigename:
new_mv
- Beschreibung:
A materialized view that expires in 2 days
- Label:
org_unit = development
- Aktualisierung aktiviert: „true“
- Aktualisierungsintervall: 20 Minuten
Eine materialisierte Ansicht nur erstellen, wenn die materialisierte Ansicht nicht vorhanden ist
Im folgenden Beispiel wird nur dann in mydataset
eine materialisierte Ansicht mit dem Namen new_mv
erstellt, wenn in mydataset
keine materialisierte Ansicht mit dem Namen new_mv
vorliegt. Wenn der Name der materialisierten Ansicht im Dataset vorhanden ist, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
CREATE MATERIALIZED VIEW IF NOT EXISTS `myproject.mydataset.new_mv`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
friendly_name="new_mv",
description="a view that expires in 2 days",
labels=[("org_unit", "development")],
enable_refresh=false
)
AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Die materialisierte Ansicht wird mit der folgenden Abfrage in Standard-SQL definiert:
SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`
Die Optionsliste für die materialisierte Ansicht legt Folgendes fest:
- Ablaufzeit: 48 Stunden ab dem Zeitpunkt, an dem die Ansicht erstellt wird
- Anzeigename:
new_mv
- Beschreibung:
A view that expires in 2 days
- Label:
org_unit = development
- Aktualisierung aktiviert: „false“
Eine materialisierte Ansicht mit Partitionierung und Clustering erstellen
Im folgenden Beispiel wird eine materialisierte Ansicht namens new_mv
in mydataset
erstellt, die nach der Spalte col_datetime
partitioniert und nach der Spalte col_int
geclustert wird:
CREATE MATERIALIZED VIEW `myproject.mydataset.new_mv`
PARTITION BY DATE(col_datetime)
CLUSTER BY col_int
AS SELECT col_int, col_datetime, COUNT(1) as cnt
FROM `myproject.mydataset.mv_base_table`
GROUP BY col_int, col_datetime
Die Basistabelle mv_base_table
muss ebenfalls nach der Spalte col_datetime
partitioniert werden. Weitere Informationen finden Sie unter Mit partitionierten und geclusterten Tabellen arbeiten.
CREATE EXTERNAL TABLE
-Anweisung
Erstellt eine neue externe Tabelle.
Über externe Tabellen können in BigQuery Daten abgefragt werden, die außerhalb des BigQuery-Speichers abgelegt sind. Weitere Informationen zu externen Tabellen finden Sie unter Einführung in externe Datenquellen.
Syntax
CREATE [ OR REPLACE ] EXTERNAL TABLE [ IF NOT EXISTS ] table_name [( column_name column_schema, ... )] [WITH CONNECTION connection_name] [WITH PARTITION COLUMNS [( partition_column_name partition_column_type, ... )] ] OPTIONS ( external_table_option_list, ... );
Argumente
OR REPLACE
: Ersetzt jede externe Tabelle mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.IF NOT EXISTS
: Wenn eine externe Tabelle oder eine andere Tabellenressource mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.table_name
: Der Name der externen Tabelle Siehe Tabellenpfadsyntax.column_name
: Der Name einer Spalte in der Tabelle.column_schema
: Gibt das Schema der Spalte an. Dabei wird dieselbe Syntax wie die Definitioncolumn_schema
in derCREATE TABLE
-Anweisung verwendet. Wenn Sie diese Klausel nicht einbeziehen, erkennt BigQuery das Schema automatisch.connection_name
: Gibt eine Verbindungsressource an, die Anmeldedaten für den Zugriff auf die externen Daten enthält. Geben Sie den Verbindungsnamen im Format PROJECT_ID.LOCATION.CONNECTION_ID an. Wenn die Projekt-ID oder der Standort einen Bindestrich enthält, setzen Sie den Verbindungsnamen in Graviszeichen (`
).partition_column_name
: Der Name einer Partitionsspalte. Geben Sie dieses Feld an, wenn Ihre externen Daten ein mit Hive partitioniertes Layout verwenden. Weitere Informationen finden Sie unter Unterstützte Datenlayouts.partition_column_type
: Der Typ der Partitionsspalte.external_table_option_list
: Eine Liste von Optionen zum Erstellen der externen Tabelle.
Details
Die CREATE EXTERNAL TABLE
-Anweisung unterstützt nicht das Erstellen temporärer externer Tabellen.
Zum Erstellen einer extern partitionierten Tabelle verwenden Sie die Klausel WITH PARTITION COLUMNS
, um die Details des Partitionsschemas anzugeben. BigQuery prüft die Spaltendefinitionen anhand des externen Speicherorts. Die Schemadeklaration muss die Reihenfolge der Felder im externen Pfad genau einhalten. Weitere Informationen zur externen Partitionierung finden Sie unter Extern partitionierte Daten abfragen.
external_table_option_list
Mit der Optionsliste legen Sie Optionen zum Erstellen der externen Tabelle fest. Die Optionen format
und uris
sind erforderlich. Geben Sie die Optionsliste im folgenden Format an: NAME=VALUE, ...
.
Optionen | |
---|---|
allow_jagged_rows |
Bei Gilt für CSV-Daten. |
allow_quoted_newlines |
Bei Gilt für CSV-Daten. |
compression |
Komprimierungstyp der Datenquelle. Diese Werte werden unterstützt:
Gilt für CSV- und JSON-Daten. |
description |
Eine Beschreibung dieser Tabelle. |
enable_logical_types |
Bei Gilt für Avro-Daten. |
enum_as_string |
Wenn Gilt für Parquet-Daten. |
enable_list_inference |
Verwenden Sie bei Gilt für Parquet-Daten. |
encoding |
Die Zeichencodierung der Daten. Unterstützte Werte sind:
Gilt für CSV-Daten. |
expiration_timestamp |
Die Zeit, zu der diese Tabelle abläuft. Wenn keine Angabe erfolgt, läuft die Tabelle nicht ab. Beispiel: |
field_delimiter |
Das Trennzeichen für Felder in einer CSV-Datei. Gilt für CSV-Daten. |
format |
Das Format der externen Daten.
Unterstützte Werte für
Unterstützte Werte für
Der Wert |
decimal_target_types |
Bestimmt, wie ein Beispiel: |
json_extension |
Gibt für JSON-Daten ein bestimmtes JSON-Austauschformat an. Wenn nicht angegeben, liest BigQuery die Daten als generische JSON-Einträge. Diese Werte werden unterstützt: |
hive_partition_uri_prefix |
Ein gemeinsames Präfix für alle Quell-URIs, bevor die Codierung des Partitionierungsschlüssels beginnt. Gilt nur für mit Hive partitionierte Tabellen. Gilt für Avro-, CSV-, JSON-, Parquet- und ORC-Daten. Beispiel: |
ignore_unknown_values |
Bei Gilt für CSV- und JSON-Daten. |
max_bad_records |
Die maximale Anzahl fehlerhafter Datensätze, die beim Lesen der Daten ignoriert werden. Gilt für CSV-, JSON- und Google Tabellen-Daten. |
null_marker |
Der String, der Gilt für CSV-Daten. |
preserve_ascii_control_characters |
Bei Gilt für CSV-Daten. |
projection_fields |
Eine Liste der zu ladenden Entitätsattribute. Gilt für Datastore-Daten. |
quote |
Der String, der zum Kennzeichnen von Datenabschnitten in einer CSV-Datei verwendet wird. Wenn Ihre Daten Zeilenumbruchzeichen in Anführungszeichen enthalten, setzen Sie auch das Attribut Gilt für CSV-Daten. |
require_hive_partition_filter |
Bei Gilt für Avro-, CSV-, JSON-, Parquet- und ORC-Daten. |
sheet_range |
Bereich einer Google Tabellen-Tabelle, aus der abgefragt werden soll. Gilt für Google Tabellen-Daten. Beispiel: |
skip_leading_rows |
Die Anzahl der Zeilen am Anfang einer Datei, die beim Lesen der Daten übersprungen werden sollen. Gilt für CSV- und Google Tabellen-Daten. |
uris |
Ein Array von voll qualifizierten URIs für die externen Datenspeicherorte. Beispiel: |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.create |
Das Dataset, in dem Sie die externe Tabelle erstellen. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigung bigquery.tables.update
.
Wenn die Klausel OPTIONS
eine Ablaufzeit enthält, ist auch die Berechtigung bigquery.tables.delete
erforderlich.
Beispiele
Im folgenden Beispiel wird eine externe Tabelle aus mehreren URIs erstellt. Das Datenformat ist CSV. In diesem Beispiel wird die automatische Schemaerkennung verwendet.
CREATE EXTERNAL TABLE dataset.CsvTable OPTIONS (
format = 'CSV',
uris = ['gs://bucket/path1.csv', 'gs://bucket/path2.csv']
);
Im folgenden Beispiel wird eine externe Tabelle aus einer CSV-Datei erstellt und das Schema explizit angegeben. Außerdem wird das Feldtrennzeichen ('|'
) angegeben und die Anzahl der maximal zulässigen fehlerhaften Datensätzen festgelegt.
CREATE OR REPLACE EXTERNAL TABLE dataset.CsvTable
(
x INT64,
y STRING
)
OPTIONS (
format = 'CSV',
uris = ['gs://bucket/path1.csv'],
field_delimiter = '|',
max_bad_records = 5
);
Im folgenden Beispiel wird eine extern partitionierte Tabelle erstellt. Mit der automatischen Schemaerkennung wird sowohl das Dateisystem als auch das Hive-Partitionierungslayout ermittelt.
Wenn der externe Pfad beispielsweise gs://bucket/path/field_1=first/field_2=1/data.csv
ist, lauten die Partitionsspalten field_1
(STRING
) und field_2
(INT64
).
CREATE EXTERNAL TABLE dataset.AutoHivePartitionedTable
WITH PARTITION COLUMNS
OPTIONS (
uris=['gs://bucket/path/*'],
format=csv,
hive_partition_uri_prefix='gs://bucket/path'
);
Im folgenden Beispiel wird eine extern partitionierte Tabelle erstellt, indem die Partitionsspalten explizit angegeben werden. In diesem Beispiel wird davon ausgegangen, dass der externe Dateipfad das Muster gs://bucket/path/field_1=first/field_2=1/data.csv
hat.
CREATE EXTERNAL TABLE dataset.CustomHivePartitionedTable
WITH PARTITION COLUMNS (
field_1 STRING, -- column order must match the external path
field_2 INT64
)
OPTIONS (
uris=['gs://bucket/path/*'],
format=csv,
hive_partition_uri_prefix='gs://bucket/path'
);
CREATE FUNCTION
-Anweisung
Erstellt eine neue benutzerdefinierte Funktion (UDF). BigQuery unterstützt UDFs, die entweder in SQL oder JavaScript geschrieben sind.
Syntax
Verwenden Sie die folgende Syntax, um eine SQL-UDF zu erstellen:
CREATE [ OR REPLACE ] [ TEMPORARY | TEMP ] FUNCTION [ IF NOT EXISTS ] [[project_name.]dataset_name.]function_name ([named_parameter[, ...]]) ([named_parameter[, ...]]) [RETURNS data_type] AS (sql_expression) [OPTIONS (function_option_list)] named_parameter: param_name param_type
Verwenden Sie die folgende Syntax, um eine JavaScript-UDF zu erstellen:
CREATE [OR REPLACE] [TEMPORARY | TEMP] FUNCTION [IF NOT EXISTS] [[project_name.]dataset_name.]function_name ([named_parameter[, ...]]) RETURNS data_type [determinism_specifier] LANGUAGE js [OPTIONS (function_option_list)] AS javascript_code named_parameter: param_name param_type determinism_specifier: { DETERMINISTIC | NOT DETERMINISTIC }
Verwenden Sie die folgende Syntax, um eine Remote-Funktion zu erstellen:
CREATE [OR REPLACE] FUNCTION [IF NOT EXISTS] [[project_name.]dataset_name.]function_name ([named_parameter[, ...]]) RETURNS data_type REMOTE WITH CONNECTION connection_path [OPTIONS (function_option_list)] named_parameter: param_name param_type
Routinenamen dürfen nur Buchstaben, Zahlen und Unterstriche enthalten und dürfen höchstens 256 Zeichen umfassen.
Argumente
OR REPLACE
: Ersetzt jede Funktion mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.IF NOT EXISTS
: Wenn ein Dataset mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.TEMP
oderTEMPORARY
: Erstellt eine temporäre Funktion. Wenn die Klausel nicht vorhanden ist, erstellt die Anweisung eine persistente UDF. Sie können persistente UDFs für mehrere Abfragen verwenden, temporäre UDFs jedoch nur in einer einzigen Abfrage, einem Skript oder einer Prozedur.project_name
. Bei persistenten Funktionen der Name des Projekts, in dem Sie die Funktion erstellen. Die Standardeinstellung ist das Projekt, das die DDL-Abfrage ausführt. Geben Sie nicht den Projektnamen für temporäre Funktionen an.dataset_name
. Bei persistenten Funktionen der Name des Datasets, in dem Sie die Funktion erstellen. Die Standardeinstellung istdefaultDataset
in der Anfrage. Geben Sie nicht den Datensatznamen für temporäre Funktionen an.function_name
. Der Name der Funktion.named_parameter
: Ein durch Kommas getrenntes Paar ausparam_name
undparam_type
. Der Wert vonparam_type
ist ein BigQuery-Datentyp. Bei einer SQL-UDF kann der Wert vonparam_type
auchANY TYPE
sein.determinism_specifier
: Gilt nur für JavaScript-UDFs. Weist BigQuery darauf hin, ob das Abfrageergebnis im Cache speicherbar ist. Kann einer der folgenden Werte sein:DETERMINISTIC
: Die Funktion gibt immer dasselbe Ergebnis zurück, wenn dieselben Argumente übergeben werden. Das Abfrageergebnis sind potenziell im Cache speicherbar. Wenn die Funktionadd_one(i)
beispielsweise immeri + 1
zurückgibt, ist die Funktion deterministisch.NOT DETERMINISTIC
: Die Funktion gibt nicht immer dasselbe Ergebnis zurück, wenn dieselben Argumente übergeben werden, und ist daher nicht im Cache speicherbar. Wenn die Funktionadd_random(i)
beispielsweise den Werti + rand()
zurückgibt, ist die Funktion nicht deterministisch und BigQuery verwendet keine im Cache gespeicherten Ergebnisse.Wenn alle aufgerufenen Funktionen
DETERMINISTIC
sind, versucht BigQuery, das Ergebnis im Cache zu speichern, außer die Ergebnisse sind aus anderen Gründen nicht im Cache speicherbar. Weitere Informationen finden Sie unter Im Cache gespeicherte Abfrageergebnisse verwenden.
data_type
: Der Datentyp, der von der Funktion zurückgegeben wird.- Wenn die Funktion in SQL definiert ist, ist die Klausel
RETURNS
optional. Wenn die KlauselRETURNS
nicht angegeben wird und die Funktion von einer Abfrage aufgerufen wird, leitet BigQuery den Ergebnistyp der Funktion aus dem SQL-Funktionsrumpf ab. - Wenn die Funktion in JavaScript definiert ist, muss die Klausel
RETURNS
verwendet werden. Weitere Informationen zu zulässigen Werten fürdata_type
finden Sie unter Von JavaScript-UDFs unterstützte Datentypen.
- Wenn die Funktion in SQL definiert ist, ist die Klausel
sql_expression
: Der SQL-Ausdruck, der die Funktion definiert.function_option_list
. Eine Liste von Optionen zum Erstellen der Funktion.javascript_code
: Die Definition einer JavaScript-Funktion. Der Wert ist ein Stringliteral. Wenn der Code Anführungszeichen und umgekehrte Schrägstriche enthält, muss er entweder maskiert oder als Rohstring dargestellt werden. Beispielsweise kann der Codereturn "\n";
als einer der folgenden Werte dargestellt werden:- String in Anführungszeichen
"return \"\\n\";"
Sowohl Anführungszeichen als auch umgekehrte Schrägstriche müssen maskiert werden. - String in drei Anführungszeichen:
"""return "\\n";"""
. Umgekehrte Schrägstriche müssen maskiert werden, während Anführungszeichen nicht maskiert werden müssen. - Rohstring:
r"""return "\n";"""
. Es ist keine Maskierung erforderlich.
- String in Anführungszeichen
connection_name
: Gibt eine Verbindungsressource an, die Anmeldedaten für den Zugriff auf den Remote-Endpunkt hat. Geben Sie den Verbindungsnamen im Formatproject_name.location.connection_id
an. Wenn der Projektname oder -standort einen Bindestrich enthält, setzen Sie den Verbindungsnamen in Graviszeichen (`
).
function_option_list
Die Optionsliste gibt Optionen zum Erstellen einer UDF an. Es werden die folgenden Optionen unterstützt:
NAME |
VALUE |
Details |
---|---|---|
description |
|
Eine Beschreibung der UDF. |
library |
|
Ein Array von JavaScript-Bibliotheken, die in die Funktionsdefinition aufgenommen werden sollen. Gilt nur für JavaScript-UDFs. Weitere Informationen finden Sie unter JavaScript-Bibliotheken einschließen. Beispiel: |
endpoint |
|
Ein HTTP-Endpunkt von Cloud Functions. Gilt nur für Remote-Funktionen. Beispiel: Weitere Informationen finden Sie unter Remote-Funktion erstellen. |
user_defined_context |
|
Eine Liste der Schlüssel/Wert-Paare, die beim Aufruf der Funktion mit jeder HTTP-Anfrage gesendet werden. Gilt nur für Remote-Funktionen. Beispiel: |
max_batching_rows |
|
Die maximale Anzahl von Zeilen in jeder HTTP-Anfrage. Wenn nicht angegeben, entscheidet BigQuery, wie viele Zeilen in einer HTTP-Anfrage enthalten sind. Gilt nur für Remote-Funktionen. |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.routines.create |
Das Dataset, in dem Sie die Funktion erstellen. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigung bigquery.routines.update
.
Zum Erstellen einer Remote-Funktion sind zusätzliche IAM-Berechtigungen erforderlich:
Berechtigung | Ressource |
---|---|
bigquery.connections.delegate
|
Die Verbindung, die Sie zum Erstellen der Remote-Funktion verwenden. |
Beispiele
SQL-UDF erstellen
Im folgenden Beispiel wird eine nichtflüchtige SQL-UDF mit dem Namen multiplyInputs
in einem Dataset mit dem Namen mydataset
erstellt.
CREATE FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
AS (x * y);
JavaScript-UDF erstellen
Im folgenden Beispiel wird eine temporäre JavaScript-UDF mit dem Namen multiplyInputs
erstellt und aus einer SELECT
-Anweisung aufgerufen:
CREATE TEMP FUNCTION multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS r"""
return x*y;
""";
SELECT multiplyInputs(a, b) FROM (SELECT 3 as a, 2 as b);
Remote-Funktion erstellen
Im folgenden Beispiel wird eine persistente Remote-Funktion mit dem Namen remoteMultiplyInputs
in einem Dataset mit dem Namen mydataset
erstellt, unter der Annahme, dass sich mydataset
am Standort US
befindet und es eine Verbindung myconnection
in demselben Standort und demselben Projekt gibt.
CREATE FUNCTION mydataset.remoteMultiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
REMOTE WITH CONNECTION us.myconnection
OPTIONS(endpoint="https://us-central1-myproject.cloudfunctions.net/multiply");
CREATE TABLE FUNCTION
-Anweisung
Erstellt eine neue Tabellenfunktion, auch Tabellenwertfunktion (Table-valued function, TVF) genannt.
Syntax
CREATE [ OR REPLACE ] TABLE FUNCTION [ IF NOT EXISTS ] [[project_name.]dataset_name.]function_name ( [ function_parameter [, ...] ] ) [RETURNS TABLE < column_declaration [, ...] > ] AS sql_query function_parameter: parameter_name { data_type | ANY TYPE } column_declaration: column_name data_type
Argumente
OR REPLACE
: Ersetzt jede Tabelle mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.IF NOT EXISTS
: Wenn eine Tabellenfunktion mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.project_name
: Der Name des Projekts, in dem Sie die Funktion erstellen. Die Standardeinstellung ist das Projekt, das diese DDL-Anweisung ausführt.dataset_name
: Der Name des Datasets, in dem Sie die Funktion erstellen.function_name
: Der Name der zu erstellenden Funktion.function_parameter
: Ein Parameter für die Funktion, der als Parametername und Datentyp angegeben wird. Der Wert vondata_type
ist ein skalarer BigQuery-Datentyp oderANY TYPE
.RETURNS TABLE
: Das Schema der Tabelle, die von der Funktion zurückgegeben wird, angegeben als durch Kommas getrennte Liste von Spaltennamen und Datentyppaaren. WennRETURNS TABLE
nicht vorhanden ist, leitet BigQuery das Ausgabeschema von der Abfrageanweisung im Funktionsrumpf ab. WennRETURNS TABLE
enthalten ist, müssen die Namen im zurückgegebenen Tabellentyp mit den Spaltennamen aus der SQL-Abfrage übereinstimmen.sql_query
: Gibt die auszuführende SQL-Abfrage an. Die SQL-Abfrage muss Namen für alle Spalten enthalten.
Details
BigQuery wandelt Argumenttypen nach Möglichkeit implizit um. Wenn der Parametertyp beispielsweise FLOAT64
lautet und Sie einen INT64
-Wert übergeben, wandelt BigQuery ihn in FLOAT64
um.
Wenn ein Parametertyp ANY TYPE
ist, akzeptiert die Funktion eine Eingabe eines beliebigen Typs für dieses Argument. Der Typ, den Sie an die Funktion übergeben, muss mit der Funktionsdefinition kompatibel sein. Wenn Sie ein Argument mit einem inkompatiblen Typ übergeben, gibt die Abfrage einen Fehler zurück. Wenn mehrere Parameter den Typ ANY TYPE
haben, erzwingt BigQuery keine Typbeziehung zwischen ihnen.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.routines.create
|
Das Dataset, in dem Sie die Tabellenfunktion erstellen. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigung bigquery.routines.update
.
Beispiele
Die folgende Tabellenfunktion verwendet den Parameter INT64
, mit dem die Ergebnisse einer Abfrage gefiltert werden:
CREATE OR REPLACE TABLE FUNCTION mydataset.names_by_year(y INT64)
AS
SELECT year, name, SUM(number) AS total
FROM `bigquery-public-data.usa_names.usa_1910_current`
WHERE year = y
GROUP BY year, name
Im folgenden Beispiel wird der Rückgabetyp TABLE
in der RETURNS
-Klausel angegeben:
CREATE OR REPLACE TABLE FUNCTION mydataset.names_by_year(y INT64) RETURNS TABLE<name STRING, year INT64, total INT64> AS SELECT year, name, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE year = y GROUP BY year, name
CREATE PROCEDURE
-Anweisung
Erstellt eine neue Prozedur, einen Block von Anweisungen, die von anderen Abfragen aufgerufen werden können. Prozeduren können rekursiv sich selbst aufrufen.
Syntax
CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS] [[project_name.]dataset_name.]procedure_name (procedure_argument[, ...] ) [OPTIONS(procedure_option_list)] BEGIN multi_statement_query END; procedure_argument: [procedure_argument_mode] argument_name argument_type
procedure_argument_mode: IN | OUT | INOUT
Argumente
OR REPLACE
: Ersetzt jede Vorgehensweise mit demselben Namen, sofern vorhanden. Kann nicht mitIF NOT EXISTS
angezeigt werden.IF NOT EXISTS
: Wenn eine Vorgehensweise mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.project_name
**: Der Name des Projekts, in dem Sie das Verfahren erstellen. Die Standardeinstellung ist das Projekt, das diese DDL-Abfrage ausführt. Wenn der Projektname Sonderzeichen wie Doppelpunkte enthält, sollte er in Graviszeichen (`
) gesetzt werden (Beispiel:`google.com:my_project`
).dataset_name
: Der Name des Datasets, in dem Sie das Verfahren erstellen. Die Standardeinstellung istdefaultDataset
in der Anfrage.procedure_name
: Der Name des zu erstellenden Verfahrens.multi_statement_query
: Die Abfrage mit mehreren Anweisungen, die ausgeführt werden soll.argument_type
: Jeder gültige BigQuery-Typ.procedure_argument_mode
: Gibt an, ob ein Argument eine Eingabe, eine Ausgabe oder beides ist.
procedure_option_list
Mit procedure_option_list
können Sie Verfahrensoptionen angeben. Für Prozeduroptionen sind Syntax und Anforderungen identisch. Sie unterscheiden sich aber in den Listen für NAME
und VALUE
:
NAME |
VALUE |
Details |
---|---|---|
strict_mode |
|
Beispiel: Wenn Obwohl Wenn Der Standardwert ist |
Argumentmodus
IN
gibt an, dass das Argument nur eine Eingabe für die Prozedur ist. Sie können für IN
-Argumente entweder eine Variable oder einen Wertausdruck angeben.
OUT
gibt an, dass das Argument eine Ausgabe der Prozedur ist. Ein OUT
-Argument wird beim Start der Prozedur mit NULL
initialisiert. Für OUT
-Argumente müssen Sie eine Variable angeben.
INOUT
gibt an, dass das Argument sowohl eine Eingabe für die Prozedur als auch eine Ausgabe der Prozedur ist. Auch für INOUT
-Argumente müssen Sie eine Variable festlegen. Auf ein INOUT
-Argument kann im Verfahrenstext in Form einer Variable und in Form von zugewiesenen neuen Werten verwiesen werden.
Wenn weder IN
, OUT
noch INOUT
angegeben ist, wird das Argument als IN
-Argument behandelt.
Bereich von Variablen
Wenn eine Variable außerhalb einer Prozedur deklariert sowie als INOUT- oder OUT-Argument an eine Prozedur übergeben wird und die Prozedur der Variablen einen neuen Wert zuweist, ist dieser außerhalb der Prozedur sichtbar.
In einer Prozedur deklarierte Variablen sind außerhalb der Prozedur nicht sichtbar und umgekehrt.
Mithilfe von SET
kann einem OUT
- oder INOUT
-Argument aber ein Wert zugewiesen werden. Der geänderte Wert ist dann außerhalb des Verfahrens sichtbar. Wenn die Prozedur erfolgreich beendet wird, ist der Wert des OUT
- bzw. INOUT
-Arguments dann der endgültige Wert, der dieser INOUT
-Variable zugewiesen wird.
Temporäre Tabellen sind immer für die Dauer des Skripts vorhanden. Wenn eine Prozedur eine temporäre Tabelle erstellt, kann der Aufrufer der Prozedur auch auf die temporäre Tabelle verweisen.
Standardprojekt im Verfahrenstext
In den Verfahrenstexten können Entitäten ohne Angabe des Projekts referenziert werden. Das Standardprojekt ist das Projekt, zu dem das Verfahren gehört, und nicht unbedingt das Projekt, mit dem die Anweisung CREATE PROCEDURE
ausgeführt wird. Betrachten Sie die folgende Beispielabfrage.
CREATE PROCEDURE myProject.myDataset.QueryTable()
BEGIN
SELECT * FROM anotherDataset.myTable;
END;
Nachdem Sie das obige Verfahren erstellt haben, können Sie die Abfrage CALL myProject.myDataset.QueryTable()
ausführen. Unabhängig davon, in welchem Projekt Sie diese CALL
-Abfrage ausführen, wird die referenzierte Tabelle anotherDataset.myTable
immer für das Projekt myProject
aufgelöst.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.routines.create |
Das Dataset, in dem Sie das Verfahren erstellen. |
Darüber hinaus erfordert die Klausel OR REPLACE
die Berechtigung bigquery.routines.update
.
Beispiele
Im folgenden Beispiel wird eine Prozedur erstellt, die x
sowohl als Eingabeargument verwendet als auch x
als Ausgabe zurückgibt. Da für das Argument delta
kein Argumentmodus festgelegt ist, gilt es als Eingabeargument. Die Prozedur besteht aus einem Block mit einer einzigen Anweisung, durch die die Summe der beiden Eingabeargumente zu x
zugewiesen wird.
CREATE PROCEDURE mydataset.AddDelta(INOUT x INT64, delta INT64)
BEGIN
SET x = x + delta;
END;
Im folgenden Beispiel wird die AddDelta
-Prozedur aus dem obigen Beispiel aufgerufen, wobei beide Male die Variable accumulator
an sie übergeben wird. Da die Änderungen an x
innerhalb von AddDelta
außerhalb von AddDelta
sichtbar sind, erhöhen diese Prozeduraufrufe accumulator
um insgesamt 8.
DECLARE accumulator INT64 DEFAULT 0;
CALL mydataset.AddDelta(accumulator, 5);
CALL mydataset.AddDelta(accumulator, 3);
SELECT accumulator;
Es wird Folgendes zurückgegeben:
+-------------+
| accumulator |
+-------------+
| 8 |
+-------------+
Im folgenden Beispiel wird die Prozedur SelectFromTablesAndAppend
erstellt, die target_date
als Eingabeargument verwendet und rows_added
als Ausgabe zurückgibt.
Mit der Prozedur wird aus einer Abfrage eine temporäre Tabelle DataForTargetDate
erstellt. Anschließend wird die Anzahl der Zeilen in DataForTargetDate
berechnet und das Ergebnis rows_added
zugewiesen. Als Nächstes wird eine neue Zeile in TargetTable
eingefügt, wobei der Wert von target_date
als einer der Spaltennamen übergeben wird. Zum Schluss wird die Tabelle DataForTargetDate
gelöscht und rows_added
zurückgegeben.
CREATE PROCEDURE mydataset.SelectFromTablesAndAppend(
target_date DATE, OUT rows_added INT64)
BEGIN
CREATE TEMP TABLE DataForTargetDate AS
SELECT t1.id, t1.x, t2.y
FROM dataset.partitioned_table1 AS t1
JOIN dataset.partitioned_table2 AS t2
ON t1.id = t2.id
WHERE t1.date = target_date
AND t2.date = target_date;
SET rows_added = (SELECT COUNT(*) FROM DataForTargetDate);
SELECT id, x, y, target_date -- note that target_date is a parameter
FROM DataForTargetDate;
DROP TABLE DataForTargetDate;
END;
Im folgenden Beispiel wird eine Variable rows_added
deklariert und zusammen mit dem Wert von CURRENT_DATE
als Argument an die Prozedur SelectFromTablesAndAppend
aus dem vorherigen Beispiel übergeben. Anschließend wird in einer Meldung angegeben, wie viele Zeilen hinzugefügt wurden.
DECLARE rows_added INT64;
CALL mydataset.SelectFromTablesAndAppend(CURRENT_DATE(), rows_added);
SELECT FORMAT('Added %d rows', rows_added);
CREATE ROW ACCESS POLICY
-Anweisung
Erstellt oder ersetzt eine Zugriffsrichtlinie auf Zeilenebene. Zugriffsrichtlinien auf Zeilenebene für eine Tabelle müssen eindeutige Namen haben.
Syntax
CREATE [ OR REPLACE ] ROW ACCESS POLICY [ IF NOT EXISTS ]
row_access_policy_name ON table_name
[GRANT TO (grantee_list)]
FILTER USING (filter_expression);
Argumente
IF NOT EXISTS
: Wenn eine Zugriffsrichtlinie auf Zeilenebene mit demselben Namen vorhanden ist, hat die AnweisungCREATE
keine Auswirkungen. Kann nicht mitOR REPLACE
angezeigt werden.row_access_policy_name
: Der Name der Zugriffsrichtlinie auf Zeilenebene, die Sie erstellen. Der Name der Zugriffsrichtlinie auf Zeilenebene muss für jede Tabelle eindeutig sein. Der Name der Zugriffsrichtlinie auf Zeilenebene kann Folgendes enthalten:- Bis zu 256 Zeichen.
- Buchstaben (groß- oder kleingeschrieben), Ziffern und Unterstriche. Muss mit einem Buchstaben beginnen.
table_name
: Der Name der Tabelle, für die Sie eine Zugriffsrichtlinie auf Zeilenebene erstellen möchten. Die Tabelle muss bereits vorhanden sein.GRANT TO grantee_list
: Eine optionale Klausel, die die ersten Mitglieder angibt, mit denen die Zugriffsrichtlinie auf Zeilenebene erstellt werden soll.grantee_list
iam_member
ist eine Liste von -Nutzern oder Gruppen. Strings müssen gültige IAM-Hauptkonten oder Mitglieder im Format eines IAM-Richtlinienbindungsmitglieds sein und in Anführungszeichen gesetzt werden. Die folgenden Typen werden unterstützt:grantee_list
-Typenuser:{emailid}
Eine E-Mail-Adresse, die für ein bestimmtes Google-Konto steht.
Beispiel:
user:alice@example.com
serviceAccount:{emailid}
Eine E-Mail-Adresse, die für ein Dienstkonto steht.
Beispiel:
serviceAccount:my-other-app@appspot.gserviceaccount.com
group:{emailid}
Eine E-Mail-Adresse, die für eine Google-Gruppe steht.
Beispiel:
group:admins@example.com
domain:{domain}
Die Google Workspace-Domain (primäre Domain), die alle Nutzer dieser Domain repräsentiert.
Beispiel:
domain:example.com
allAuthenticatedUsers
Eine spezielle Kennung für alle Dienstkonten und alle Nutzer im Internet, die sich mit einem Google-Konto authentifiziert haben. Diese Kennzeichnung schließt auch Konten ein, die nicht mit einer Google Workspace- oder Cloud Identity-Domain verbunden sind, z. B. persönliche Gmail-Konten. Nicht authentifizierte Nutzer, wie anonyme Besucher, sind nicht eingeschlossen. allUsers
Eine spezielle Kennung für alle Identitäten im Internet, einschließlich authentifizierter und nicht authentifizierter Nutzer. Da BigQuery eine Authentifizierung erfordert, bevor ein Nutzer auf den Dienst zugreifen kann, enthält allUsers
nur authentifizierte Nutzer.Sie können eine Reihe von
iam_member
-Werten kombinieren, wenn sie durch Kommas getrennt und separat in Anführungszeichen gesetzt werden. Beispiel:"user:alice@example.com","group:admins@example.com","user:sales@example.com"
filter_expression
: Definiert die Teilmenge der Tabellenzeilen, die nur den Mitgliedern vongrantee_list
angezeigt werden sollen. Diefilter_expression
entspricht derWHERE
-Klausel in einerSELECT
-Abfrage.Folgende Filterausdrücke sind gültig:
- Skalare Standard-SQL-Funktionen von BigQuery, Aggregatfunktionen, Analysefunktionen.
SESSION_USER()
, um den Zugriff auf Zeilen zu beschränken, die zu dem Nutzer gehören, der die Abfrage ausführt. Wenn keine der Zugriffsrichtlinien auf Zeilenebene für den abfragenden Nutzer anwendbar ist, hat der Nutzer keinen Zugriff auf die Daten in der Tabelle.TRUE
Gewährt den Hauptkonten im Feldgrantee_list
Zugriff auf alle Zeilen der Tabelle.
Der Filterausdruck darf nicht Folgendes enthalten:
- Einen Verweis auf eine Tabelle
- Unterabfragen – SQL-Anweisungen wie
SELECT
,CREATE
oderUPDATE
- Benutzerdefinierte Funktionen
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.rowAccessPolicies.create |
Die Zieltabelle. |
bigquery.rowAccessPolicies.setIamPolicy |
Die Zieltabelle. |
bigquery.tables.getData |
Die Zieltabelle. |
Beispiele
CREATE CAPACITY
-Anweisung
Erwirbt Slots, indem eine neue Kapazitätszusicherung erstellt wird.
Syntax
CREATE CAPACITY project_id.location_id.commitment_id AS JSON capacity_json_object
Argumente
project_id
ist die Projekt-ID des Administrationsprojekts, dem die Zusicherung gehört.location_id
Der Standort des Projekts.commitment_id
: Die ID der Zusicherung. Der Wert muss für das Projekt und den Standort eindeutig sein. Sie muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Sie darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.capacity_json_object
: ein JSON-String, der die Kapazitätszusicherung beschreibt.
capacity_json_object
Gibt ein JSON-Objekt an, das die folgenden Felder enthält:
NAME |
TYPE |
Details |
---|---|---|
plan |
String | Der zu erwerbende Zusicherungsplan. Diese Werte werden unterstützt:
FLEX , MONTHLY , ANNUAL Weitere Informationen finden Sie unter Zusicherungspläne. |
renewal_plan |
String | Der Zusicherungsverlängerungsplan Gilt nur, wenn plan ANNUAL ist. Weitere Informationen finden Sie unter Zusicherungen verlängern. |
slot_count |
Integer | Die Anzahl an Slots in der Zusicherung. |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.capacityCommitments.create
|
Das Verwaltungsprojekt, das die Eigentumsrechte für die Zusicherungen verwaltet. |
Beispiel
Das folgende Beispiel erstellt eine Kapazitätszusicherung von 100 Flex-Slots, die sich in der Region region-us
befinden und von einem Projekt admin_project
verwaltet werden:
CREATE CAPACITY `admin_project.region-us.my-commitment`
AS JSON """{
"slot_count": 100,
"plan": "FLEX"
}"""
CREATE RESERVATION
-Anweisung
Erstellt eine Reservierung. Weitere Informationen finden Sie unter Einführung in Reservierungen.
Syntax
CREATE RESERVATION project_id.location_id.reservation_id AS JSON reservation_json_object
Argumente
project_id
: Die Projekt-ID des Administrationsprojekts, in dem die Kapazitätszusicherung erstellt wurde.location_id
: Der Standort des Projekts.reservation_id
: Die Reservierungs-ID.reservation_json_object
: Ein JSON-String, der die Reservierung beschreibt.
reservation_json_object
Gibt ein JSON-Objekt an, das die folgenden Felder enthält:
NAME |
TYPE |
Details |
---|---|---|
ignore_idle_slots |
Boolesch | Wenn der Wert true ist, verwendet die Reservierung nur die ihr bereitgestellten Slots. Der Standardwert ist false .
Weitere Informationen finden Sie unter Inaktive Slots. |
slot_capacity |
Integer | Die Anzahl der Slots, die dieser Reservierung zugewiesen werden sollen. |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.reservations.create
|
Das Verwaltungsprojekt, das die Eigentumsrechte für die Zusicherungen verwaltet. |
Beispiel
Im folgenden Beispiel wird eine Reservierung von 100 Slots im Projekt admin_project
erstellt:
CREATE RESERVATION `admin_project.region-us.prod`
AS JSON """{
"slot_capacity": 100
}"""
CREATE ASSIGNMENT
-Anweisung
Weist einer Reservierung ein Projekt, einen Ordner oder eine Organisation zu.
Syntax
CREATE ASSIGNMENT project_id.location_id.reservation_id.assignment_id AS JSON assignment_json_object
Argumente
project_id
: Die Projekt-ID des Administrationsprojekts, in dem die Reservierung erstellt wurde.location_id
: Der Standort des Projekts.reservation_id
: Die Reservierungs-ID.assignment_id
: Die ID der Zuweisung. Der Wert muss für das Projekt und den Standort eindeutig sein. Sie muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Sie darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.assignment_json_object
: Ein JSON-String, der die Zuweisung beschreibt.
Wenn Sie ein Projekt aus einer beliebigen Reservierungen entfernen und stattdessen die On-Demand-Abrechnung verwenden möchten, setzen Sie reservation_id
auf none
.
assignment_json_object
Gibt ein JSON-Objekt an, das die folgenden Felder enthält:
NAME |
TYPE |
Details |
---|---|---|
assignee |
String | Die ID des Projekts, des Ordners oder der Organisation, die der Reservierung zugewiesen werden soll. |
job_type |
String | ist der dieser Reservierung zuzuweisende Jobtyp. Unterstützte Werte sind: QUERY , PIPELINE und ML_EXTERNAL .
Weitere Informationen finden Sie unter Zuweisungen.
|
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.reservationAssignments.create
|
Das Administrationsprojekt und das zugewiesene Element. |
Beispiel
Im folgenden Beispiel wird das Projekt my_project
der Reservierung prod
für Abfragejobs zugewiesen:
CREATE ASSIGNMENT `admin_project.region-us.prod.my_assignment`
AS JSON """{
"assignee": "projects/my_project",
"job_type": "QUERY"
}"""
Im folgenden Beispiel wird der Reservierung prod
für Pipelinejobs eine Organisation zugewiesen, z. B. Lade- und Exportjobs:
CREATE ASSIGNMENT `admin_project.region-us.prod.my_assignment`
AS JSON """{
"assignee": "organizations/1234",
"job_type": "PIPELINE"
}"""
CREATE SEARCH INDEX
-Anweisung
Erstellt einen neuen Suchindex für eine oder mehrere Spalten einer Tabelle.
Ein Suchindex ermöglicht effiziente Abfragen mit der Funktion SEARCH
.
Syntax
CREATE SEARCH INDEX [ IF NOT EXISTS ] index_name ON table_name({ALL COLUMNS | column_name [, ...]})
Argumente
IF NOT EXISTS
: Wenn bereits ein Index mit diesem Namen für die Tabelle vorhanden ist, tun Sie nichts. Wenn die Tabelle einen Index mit einem anderen Namen hat, wird ein Fehler zurückgegeben.index_name
: Der Name des Index, den Sie erstellen. Da der Index immer im selben Projekt und Dataset wie die Basistabelle erstellt wird, müssen Sie Projekt und Dataset nicht im Namen angeben.table_name
: der Name der Tabelle Siehe Tabellenpfadsyntax.ALL COLUMNS
: Erstellt einen Index für jede Spalte in der Tabelle, die das FeldSTRING
enthält.column_name
: Der Name einer Spalte oberster Ebene in der Tabelle, die entweder einSTRING
ist oder einSTRING
-Feld enthält. Die Spalte muss einen der folgenden Typen aufweisen:STRING
ARRAY<STRING>
STRUCT
, das mindestens ein verschachteltes Feld vom TypSTRING
oderARRAY<STRING>
enthältJSON
Details
Sie können nur einen Index pro Basistabelle erstellen. Sie können einen Index nicht für eine Ansicht oder eine materialisierte Ansicht erstellen. Wenn Sie ändern möchten, welche Spalten indexiert werden, löschen Sie den aktuellen Index per DROP
und erstellen Sie einen neuen.
BigQuery gibt einen Fehler zurück, wenn ein column_name
kein STRING
ist oder kein STRING
-Feld enthält oder wenn Sie CREATE SEARCH INDEX
für ALL COLUMNS
einer Tabelle aufrufen, die keine STRING
-Felder enthält.
Das Erstellen eines Index schlägt in einer Tabelle mit Spalten-ACLs oder Zeilenfiltern fehl. Diese können jedoch alle nach der Erstellung des Index zur Tabelle hinzugefügt werden.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.createIndex |
Die Basistabelle, in der Sie den Index erstellen. |
Beispiele
Im folgenden Beispiel wird für alle Stringspalten von my_table
ein Index mit dem Namen my_index
erstellt. In diesem Fall wird der Index nur für die Spalte a
erstellt.
CREATE TABLE dataset.my_table(a STRING, b INT64); CREATE SEARCH INDEX my_index ON dataset.my_table(ALL COLUMNS);
Im folgenden Beispiel wird für die Spalten a
, my_struct.string_field
und b
ein Index erstellt.
CREATE TABLE dataset.complex_table(
a STRING,
my_struct STRUCT<string_field STRING, int_field INT64>,
b ARRAY<STRING>
);
CREATE SEARCH INDEX my_index
ON dataset.complex_table(a, my_struct, b);
ALTER SCHEMA SET DEFAULT COLLATE
-Anweisung
Legt Sortierspezifikationen für ein Dataset fest.
Syntax
ALTER SCHEMA [IF EXISTS] [project_name.]dataset_name SET DEFAULT COLLATE collate_specification
Argumente
IF EXISTS
: Wenn kein Dataset mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.DEFAULT COLLATE collate_specification
: Wenn eine neue Tabelle im Schema erstellt wird, übernimmt die Tabelle eine Standard-Sortierspezifikation, sofern nicht explizit eine Sortierspezifikation für eine Spalte angegeben ist.Die aktualisierte Spezifikation der Sortierung gilt nur für Tabellen, die danach erstellt werden. Wenn Sie eine vorhandene Sortierspezifikation aktualisieren möchten, müssen Sie die Spalte ändern, die die Spezifikation enthält.
project_name
: Der Name des Projekts, zu dem das Dataset gehört. Die Standardeinstellung ist das Projekt, das diese DDL-Anweisung ausführt.dataset_name
: Der Name des Datasets.collate_specification
: Gibt die festzulegenden Sortierspezifikationen an.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.datasets.get |
Das zu ändernde Dataset. |
bigquery.datasets.update |
Das zu ändernde Dataset. |
Beispiel
Angenommen, Sie haben die Tabelle mytable_a
in einem Schema namens mydataset
.
Beispiel:
CREATE SCHEMA mydataset
CREATE TABLE mydataset.mytable_a ( number INT64, word STRING )
+----------------------+
| mydataset.mytable_a |
| number INT64 |
| word STRING |
+----------------------+
Später können Sie Ihrem Schema eine Sortierspezifikation hinzufügen. Beispiel:
ALTER SCHEMA mydataset SET DEFAULT COLLATE 'und:ci'
Wenn Sie eine neue Tabelle für Ihr Schema erstellen, wird COLLATE 'und:ci'
für alle Spalten vom Typ STRING
übernommen. Beispielsweise wird die Sortierung characters
hinzugefügt, wenn Sie die Tabelle mytable_b
im Schema mydataset
erstellen:
CREATE TABLE mydataset.mytable_b ( amount INT64, characters STRING )
+--------------------------------------+
| mydataset.mytable_b |
| amount INT64 |
| characters STRING COLLATE 'und:ci' |
+--------------------------------------+
Obwohl Sie die Sortierspezifikation für das Schema aktualisiert haben, verwendet Ihre vorhandene Tabelle mytable_a
weiterhin die vorherige Sortierspezifikation. Beispiel:
+---------------------+
| mydataset.mytable_a |
| number INT64 |
| word STRING |
+---------------------+
ALTER SCHEMA SET OPTIONS
-Anweisung
Legt Optionen für ein Dataset fest.
Die Anweisung wird am Speicherort des Datasets ausgeführt, wenn das Dataset vorhanden ist, es sei denn, Sie geben den Ort in den Abfrageeinstellungen an. Weitere Informationen finden Sie unter Standort angeben.
Syntax
ALTER SCHEMA [IF EXISTS] [project_name.]dataset_name SET OPTIONS(schema_set_options_list)
Argumente
IF EXISTS
: Wenn kein Dataset mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.project_name
: Der Name des Projekts, zu dem das Dataset gehört. Die Standardeinstellung ist das Projekt, das diese DDL-Anweisung ausführt.dataset_name
: Der Name des Datasets.schema_set_options_list
: Die Liste der festzulegenden Optionen.
schema_set_options_list
Mit der Optionsliste legen Sie Optionen für das Dataset fest. Geben Sie die Optionen im folgenden Format an: NAME=VALUE, ...
Die folgenden Optionen werden unterstützt:
NAME |
VALUE |
Details |
---|---|---|
default_kms_key_name |
STRING |
Gibt den standardmäßigen Cloud KMS-Schlüssel zum Verschlüsseln von Tabellendaten in diesem Dataset an. Sie können diesen Wert beim Erstellen einer Tabelle überschreiben. |
default_partition_expiration_days |
FLOAT64 |
Gibt die Standardablaufzeit in Tagen für Tabellenpartitionen in diesem Dataset an. Sie können diesen Wert beim Erstellen einer Tabelle überschreiben. |
default_table_expiration_days |
FLOAT64 |
Gibt die Standardablaufzeit in Tagen für Tabellen in diesem Dataset an. Sie können diesen Wert beim Erstellen einer Tabelle überschreiben. |
description |
STRING |
Die Beschreibung des Datasets. |
friendly_name |
STRING |
Ein aussagekräftiger Name für das Dataset. |
labels |
<ARRAY<STRUCT<STRING, STRING>>> |
Ein Array von Labels für das Dataset, ausgedrückt als Schlüssel/Wert-Paare. |
location |
STRING |
Der Standort, an dem das Dataset erstellt werden soll. Wenn Sie diese Option nicht angeben, wird das Dataset an dem Standort erstellt, an dem die Abfrage ausgeführt wird. Wenn Sie diese Option angeben und auch den Standort für den Abfragejob explizit festlegen, müssen die beiden Werte übereinstimmen. Andernfalls schlägt die Abfrage fehl. |
max_time_travel_hours |
SMALLINT |
Gibt die Dauer des Zeitreisefensters für das neue Dataset in Stunden an. Der Wert Weitere Informationen zum Zeitfenster finden Sie unter Zeitfenster konfigurieren. |
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.datasets.get |
Das zu ändernde Dataset. |
bigquery.datasets.update |
Das zu ändernde Dataset. |
Beispiel
Im folgenden Beispiel wird der Standardablaufwert für Tabellen festgelegt.
ALTER SCHEMA mydataset SET OPTIONS( default_table_expiration_days=3.75 )
ALTER TABLE SET OPTIONS
-Anweisung
Legt die Optionen für eine Tabelle fest.
Syntax
ALTER TABLE [IF EXISTS] table_name SET OPTIONS(table_set_options_list)
Argumente
IF EXISTS
: Wenn keine Tabelle mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_name
: Der Name der zu ändernden Tabelle. Siehe Tabellenpfadsyntax.table_set_options_list
: Die Liste der festzulegenden Optionen.
Details
Diese Anweisung wird für externe Tabellen nicht unterstützt.
table_set_options_list
Mit der Optionsliste können Sie Tabellenoptionen wie ein Label oder eine Ablaufzeit festlegen. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.
Eine Tabellenoptionsliste muss im folgenden Format angegeben werden:
NAME=VALUE, ...
NAME
und VALUE
müssen mit einer der folgenden Varianten kombiniert werden:
NAME |
VALUE |
Details |
---|---|---|
expiration_timestamp |
TIMESTAMP |
Beispiel: Dieses Attribut entspricht dem Attribut expirationTime der Tabellenressource. |
partition_expiration_days |
|
Beispiel: Legt den Partitionsablauf in Tagen fest. Weitere Informationen finden Sie unter Partitionsablauf festlegen. Standardmäßig laufen Partitionen nicht ab. Dieses Attribut entspricht dem Attribut timePartitioning.expirationMs der Tabellenressource, verwendet jedoch Tage anstelle von Millisekunden. Ein Tag entspricht 86.400.000 Millisekunden oder 24 Stunden. Dieses Attribut kann nur festgelegt werden, wenn die Tabelle partitioniert ist. |
require_partition_filter |
|
Beispiel: Gibt an, ob Abfragen für diese Tabelle einen Prädikatfilter enthalten müssen, der nach der Partitionierungsspalte filtert. Weitere Informationen finden Sie unter Anforderungen an Partitionsfilter festlegen. Der Standardwert ist Dieses Attribut entspricht dem Attribut timePartitioning.requirePartitionFilter der Tabellenressource. Dieses Attribut kann nur festgelegt werden, wenn die Tabelle partitioniert ist. |
kms_key_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut encryptionConfiguration.kmsKeyName der Tabellenressource. Weitere Informationen finden Sie unter Daten mit Cloud KMS-Schlüsseln schützen. |
friendly_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut friendlyName der Tabellenressource. |
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut description der Tabellenressource. |
labels |
|
Beispiel: Dieses Attribut entspricht dem Attribut labels der Tabellenressource. |
VALUE
ist ein konstanter Ausdruck, der nur Literale, Abfrageparameter und Skalarfunktionen enthält.
Der konstante Ausdruck darf Folgendes nicht enthalten:
- Einen Verweis auf eine Tabelle
- Unterabfragen oder SQL-Anweisungen wie
SELECT
,CREATE
oderUPDATE
- Benutzerdefinierte Funktionen, Aggregatfunktionen oder Analysefunktionen
- Die folgenden Skalarfunktionen:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
Mit der Einstellung VALUE
wird der vorhandene Wert dieser Option für die Tabelle ersetzt, wenn diese vorhanden ist. Wenn Sie für VALUE
den Wert NULL
festlegen, wird der Wert der Tabelle für diese Option gelöscht.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiele
Ablaufzeitstempel und Beschreibung für eine Tabelle festlegen
Im folgenden Beispiel wird der Ablaufzeitstempel für eine Tabelle auf sieben Tage nach dem Ausführungszeitpunkt der ALTER TABLE
-Anweisung festgelegt. Außerdem wird eine Beschreibung angegeben:
ALTER TABLE mydataset.mytable SET OPTIONS ( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY), description="Table that expires seven days from now" )
Erforderliches Partitionsfilterattribut für partitionierte Tabelle festlegen
Im folgenden Beispiel wird das Attribut timePartitioning.requirePartitionFilter
für eine partitionierte Tabelle festgelegt.
ALTER TABLE mydataset.mypartitionedtable SET OPTIONS (require_partition_filter=true)
Abfragen, die auf diese Tabelle verweisen, müssen einen Filter für die Partitionierungsspalte verwenden. Andernfalls gibt BigQuery einen Fehler zurück. Durch die Auswahl von true
können Sie Fehler bei der Abfrage vermeiden, da nur die vorgesehenen Daten abgefragt werden.
Ablaufzeitstempel für eine Tabelle löschen
Im folgenden Beispiel wird der Ablaufzeitstempel für eine Tabelle gelöscht, sodass es nicht zu einem Ablauf kommt:
ALTER TABLE mydataset.mytable SET OPTIONS (expiration_timestamp=NULL)
ALTER TABLE ADD COLUMN
-Anweisung
Fügt einem vorhandenen Tabellenschema eine oder mehrere neue Spalten hinzu.
Syntax
ALTER TABLE table_name
ADD COLUMN [IF NOT EXISTS] column[, ...]
Argumente
table_name
: der Name der Tabelle Siehe Tabellenpfadsyntax.IF EXISTS
: Wenn der Spaltenname bereits vorhanden ist, hat die Anweisung keine Auswirkungen.column
: Die hinzuzufügende Spalte. Dazu gehören der Name der Spalte und das hinzuzufügende Schema. Für diesen Spaltennamen und dieses Schema gilt die gleiche Syntax wie in der AnweisungCREATE TABLE
.
Details
Mit dieser Anweisung können Sie Folgendes nicht erstellen:
- Partitionierte Spalten
- Geclusterte Spalten
- Verschachtelte Spalten in vorhandenen
RECORD
-Feldern
Sie können einem vorhandenen Tabellenschema keine REQUIRED
-Spalte hinzufügen. Sie können jedoch eine verschachtelte Spalte vom Typ REQUIRED
als Teil des neuen RECORD
-Felds erstellen.
Diese Anweisung wird für externe Tabellen nicht unterstützt.
Ohne die IF NOT EXISTS
-Klausel gibt die Anweisung einen Fehler zurück, wenn die Tabelle bereits eine Spalte mit diesem Namen enthält. Wenn die IF NOT EXISTS
-Klausel enthalten und der Spaltenname bereits vorhanden ist, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
Der Wert der neuen Spalte für vorhandene Zeilen wird auf einen der folgenden Werte gesetzt:
NULL
, wenn die neue Spalte mit dem ModusNULLABLE
hinzugefügt wurde. Dies ist der Standardmodus.- Eine leeres
ARRAY
, wenn die neue Spalte mit dem ModusREPEATED
hinzugefügt wurde.
Weitere Informationen zu Schemaänderungen in BigQuery finden Sie unter Tabellenschemas ändern.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiele
Spalten hinzufügen
Im nachfolgenden Beispiel werden die folgenden Spalten einer vorhandenen Tabelle mit dem Namen mytable
hinzugefügt:
- Spalte
A
vom TypSTRING
- Spalte
B
vom TypGEOGRAPHY
- Spalte
C
vom TypNUMERIC
mit dem ModusREPEATED
- Spalte
D
vom TypDATE
mit einer Beschreibung
ALTER TABLE mydataset.mytable
ADD COLUMN A STRING,
ADD COLUMN IF NOT EXISTS B GEOGRAPHY,
ADD COLUMN C ARRAY<NUMERIC>,
ADD COLUMN D DATE OPTIONS(description="my description")
Wenn eine der Spalten A
, C
oder D
bereits vorhanden ist, schlägt die Anweisung fehl.
Wenn die Spalte B
bereits vorhanden ist, wird die Anweisung aufgrund der IF NOT
EXISTS
-Klausel erfolgreich ausgeführt.
Spalte RECORD
hinzufügen
Im folgenden Beispiel wird eine Spalte namens A
vom Typ STRUCT
hinzugefügt, die die folgenden verschachtelten Spalten enthält:
- Spalte
B
vom TypGEOGRAPHY
- Spalte
C
vom TypINT64
mit dem ModusREPEATED
- Spalte
D
vom TypINT64
mit dem ModusREQUIRED
- Spalte
E
vom TypTIMESTAMP
mit einer Beschreibung
ALTER TABLE mydataset.mytable
ADD COLUMN A STRUCT<
B GEOGRAPHY,
C ARRAY<INT64>,
D INT64 NOT NULL,
E TIMESTAMP OPTIONS(description="creation time")
>
Die Abfrage schlägt fehl, wenn die Tabelle bereits eine Spalte namens A
enthält, auch wenn diese Spalte keine der angegebenen verschachtelten Spalten enthält.
Für die neue STRUCT
-Spalte mit dem Namen A
sind Nullwerte zulässig. Die verschachtelte Spalte D
innerhalb von A
ist jedoch für alle STRUCT
-Werte von A
erforderlich.
Sortierunterstützung einer Spalte hinzufügen
Wenn Sie eine neue Spalte für Ihre Tabelle erstellen, können Sie dieser Spalte eine neue Sortierspezifikation zuweisen.
ALTER TABLE mydataset.mytable ADD COLUMN word STRING COLLATE 'und:ci'
ALTER TABLE RENAME TO
-Anweisung
Benennt einen Klon, einen Snapshot oder eine Tabelle um.
Syntax
ALTER TABLE [IF EXISTS] table_name RENAME TO new_table_name
Argumente
IF EXISTS
: Wenn keine Tabelle mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_name
. Der Name der Tabelle, die umbenannt werden soll. Siehe Tabellenpfadsyntax.new_table_name
: Der neue Name der Tabelle. Der neue Name darf kein vorhandener Tabellenname sein.
Details
- Diese Anweisung wird für externe Tabellen nicht unterstützt.
- Wenn Sie beim Umbenennen der Tabelle Tabellenrichtlinien oder Zugriffsrichtlinien auf Zeilenebene ändern, sind diese Änderungen möglicherweise nicht wirksam.
- Wenn Sie eine Tabelle umbenennen möchten, die Daten-Streaming enthält, müssen Sie das Streaming beenden und warten, bis BigQuery anzeigt, dass das Streaming nicht verwendet wird.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiele
Tabelle umbenennen
Im folgenden Beispiel wird die Tabelle mydataset.mytable
in mydataset.mynewtable
umbenannt:
ALTER TABLE mydataset.mytable RENAME TO mynewtable
ALTER TABLE DROP COLUMN
-Anweisung
Löscht eine oder mehrere Spalten aus einem vorhandenen Tabellenschema.
Syntax
ALTER TABLE table_name
DROP COLUMN [IF EXISTS] column_name [, ...]
Argumente
table_name
: Der Name der zu ändernden Tabelle. Siehe Tabellenpfadsyntax. Die Tabelle muss bereits vorhanden sein und ein Schema haben.IF EXISTS
: Wenn die angegebene Spalte nicht vorhanden ist, hat die Anweisung keine Auswirkungen.column_name
: Der Name der zu löschenden Spalte.
Details
Durch die Anweisung wird der Speicher, der der verworfenen Spalte zugeordnet ist, nicht sofort freigegeben. Die Speicherung wird im Hintergrund über den Zeitraum von sieben Tagen ab dem Tag in Anspruch genommen, an dem eine Spalte gelöscht wird.
Weitere Informationen dazu, wie Sie den Speicher sofort zurückerhalten, finden Sie unter Spalte aus einem Tabellenschema löschen.
Mit dieser Anweisung können Sie Folgendes nicht entfernen:
- Partitionierte Spalten
- Geclusterte Spalten
- Verschachtelte Spalten in vorhandenen
RECORD
-Feldern
Diese Anweisung wird für externe Tabellen nicht unterstützt.
Ohne die IF EXISTS
-Klausel gibt die Anweisung einen Fehler zurück, wenn die Tabelle keine Spalte mit diesem Namen enthält. Wenn die IF EXISTS
-Klausel enthalten ist und der Spaltenname nicht vorhanden ist, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
Mit dieser Anweisung wird die Spalte nur aus der Tabelle entfernt. Alle Objekte, die auf die Spalte verweisen, wie Ansichten oder materialisierte Ansichten, müssen separat aktualisiert oder neu erstellt werden.
Weitere Informationen zu Schemaänderungen in BigQuery finden Sie unter Tabellenschemas ändern.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiele
Spalten entfernen
Im folgenden Beispiel werden die folgenden Spalten aus einer vorhandenen Tabelle mit dem Namen mytable
gelöscht:
- Spalte
A
- Spalte
B
ALTER TABLE mydataset.mytable
DROP COLUMN A,
DROP COLUMN IF EXISTS B
Wenn die Spalte A
nicht vorhanden ist, schlägt die Anweisung fehl. Ist die Spalte B
nicht vorhanden, ist die Anweisung dennoch aufgrund der Klausel IF EXISTS
erfolgreich.
ALTER TABLE SET DEFAULT COLLATE
-Anweisung
Legt Sortierspezifikationen für eine Tabelle fest.
Syntax
ALTER TABLE table_name SET DEFAULT COLLATE collate_specification
Argumente
table_name
: Der Name der zu ändernden Tabelle. Siehe Tabellenpfadsyntax. Die Tabelle muss bereits vorhanden sein und ein Schema haben.SET DEFAULT COLLATE collate_specification
: Wenn eine neue Spalte im Schema erstellt wird und die Spalte keine explizite Sortierspezifikation hat, übernimmt die die Spalte diese Sortierspezifikation fürSTRING
-Typen. Die aktualisierte Sortierspezifikation gilt nur für Spalten, die danach hinzugefügt werden.Wenn Sie eine vorhandene Sortierspezifikation aktualisieren möchten, müssen Sie die Spalte ändern, die die Spezifikation enthält. Wenn Sie einer Sortierreihenfolge in einer vorhandenen Tabelle eine Sortierspezifikation hinzufügen möchten, können Sie dies beim Hinzufügen der Spalte tun. Wenn Sie eine Sortierspezifikation direkt für eine Spalte hinzufügen, hat die Sortierspezifikation für die Spalte Vorrang vor der Standardspezifikation der Tabelle.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiel
Angenommen, Sie haben die Tabelle mytable
in einem Schema namens mydataset
.
CREATE TABLE mydataset.mytable ( number INT64, word STRING ) DEFAULT COLLATE 'und:ci'
Wenn Sie mytable
erstellen, übernehmen alle STRING
-Spalten COLLATE 'und:ci'
.
Die resultierende Tabelle hat diese Struktur:
+--------------------------------+
| mydataset.mytable |
| number INT64 |
| word STRING COLLATE 'und:ci' |
+--------------------------------+
Später können Sie die Sortierspezifikation für Ihre Tabelle ändern.
ALTER TABLE mydataset.mytable SET DEFAULT COLLATE ''
Obwohl Sie die Sortierspezifikation aktualisiert haben, verwendet Ihre vorhandene Spalte word
weiterhin die vorherige Sortierspezifikation.
+--------------------------------+
| mydataset.mytable |
| number INT64 |
| word STRING COLLATE 'und:ci' |
+--------------------------------+
Wenn Sie jedoch eine neue Spalte für Ihre Tabelle erstellen, enthält die neue Spalte die neue Sortierspezifikation. Im folgenden Beispiel wird eine Spalte namens name
hinzugefügt. Da die neue Sortierspezifikation leer ist, wird die Standardspezifikation verwendet.
ALTER TABLE mydataset.mytable ADD COLUMN name STRING
+--------------------------------+
| mydataset.mytable |
| number INT64 |
| word STRING COLLATE 'und:ci' |
| name STRING COLLATE |
+--------------------------------+
ALTER COLUMN SET OPTIONS
-Anweisung
Legt Optionen wie die Spaltenbeschreibung für eine Spalte in einer Tabelle in BigQuery fest.
Syntax
ALTER TABLE [IF EXISTS] table_name ALTER COLUMN [IF EXISTS] column_name SET OPTIONS(column_set_options_list)
Argumente
(ALTER TABLE) IF EXISTS
: Wenn keine Tabelle mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_name
: Der Name der zu ändernden Tabelle. Siehe Tabellenpfadsyntax.(ALTER COLUMN) IF EXISTS
: Wenn die angegebene Spalte nicht vorhanden ist, hat die Anweisung keine Auswirkungen.column_name
: Der Name der obersten Spalte, die geändert werden soll. Das Ändern von Unterfeldern wie verschachtelten Spalten in einemSTRUCT
wird nicht unterstützt.column_set_options_list
: Die Liste der Optionen, die für die Spalte festgelegt werden sollen.
Details
Diese Anweisung wird für externe Tabellen nicht unterstützt.
column_set_options_list
Die Liste der Spaltenoptionen müssen Sie im folgenden Format angeben:
NAME=VALUE, ...
NAME
und VALUE
müssen eine der folgenden Kombinationen sein:
NAME |
VALUE |
Details |
---|---|---|
description |
|
Beispiel: |
VALUE
ist ein konstanter Ausdruck, der nur Literale, Abfrageparameter und Skalarfunktionen enthält.
Der konstante Ausdruck darf Folgendes nicht enthalten:
- Einen Verweis auf eine Tabelle
- Unterabfragen oder SQL-Anweisungen wie
SELECT
,CREATE
oderUPDATE
- Benutzerdefinierte Funktionen, Aggregatfunktionen oder Analysefunktionen
- Die folgenden Skalarfunktionen:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
Mit der Einstellung VALUE
wird der vorhandene Wert dieser Option für die Spalte ersetzt, wenn diese vorhanden ist. Wenn Sie für VALUE
den Wert NULL
festlegen, wird der Wert der Spalte für diese Option gelöscht.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiele
Im folgenden Beispiel wird eine neue Beschreibung für eine Spalte namens price
festgelegt:
ALTER TABLE mydataset.mytable ALTER COLUMN price SET OPTIONS ( description="Price per unit" )
ALTER COLUMN DROP NOT NULL
-Anweisung
Entfernt die Einschränkung NOT NULL
aus einer Spalte in einer Tabelle in BigQuery.
Syntax
ALTER TABLE [IF EXISTS] table_name ALTER COLUMN [IF EXISTS] column DROP NOT NULL
Argumente
(ALTER TABLE) IF EXISTS
: Wenn keine Tabelle mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_name
: Der Name der zu ändernden Tabelle. Siehe Tabellenpfadsyntax.(ALTER COLUMN) IF EXISTS
: Wenn die angegebene Spalte nicht vorhanden ist, hat die Anweisung keine Auswirkungen.column_name
: Der Name der obersten Spalte, die geändert werden soll. Das Ändern von Unterfeldern wird nicht unterstützt.
Details
Wenn eine Spalte keine Einschränkung vom Typ NOT NULL
hat, gibt die Abfrage einen Fehler zurück.
Diese Anweisung wird für externe Tabellen nicht unterstützt.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiele
Im folgenden Beispiel wird die Einschränkung NOT NULL
aus einer Spalte namens mycolumn
entfernt:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL
ALTER COLUMN SET DATA TYPE
-Anweisung
Ändert den Datentyp einer Spalte in einer Tabelle in BigQuery in einen weniger restriktiven Datentyp. Ein NUMERIC
-Datentyp kann beispielsweise in den BIGNUMERIC
-Typ geändert werden, nicht jedoch in umgekehrter Richtung.
Syntax
ALTER TABLE [IF EXISTS] table_name ALTER COLUMN [IF EXISTS] column_name SET DATA TYPE column_schema
Argumente
(ALTER TABLE) IF EXISTS
: Wenn keine Tabelle mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_name
: Der Name der zu ändernden Tabelle. Siehe Tabellenpfadsyntax.(ALTER COLUMN) IF EXISTS
: Wenn die angegebene Spalte nicht vorhanden ist, hat die Anweisung keine Auswirkungen.column_name
: Der Name der obersten Spalte, die geändert werden soll. Das Ändern von Unterfeldern wird nicht unterstützt.column_schema
: Das Schema in das Sie die Spalte konvertieren. Dieses Schema verwendet die gleiche Syntax, die in der AnweisungCREATE TABLE
verwendet wird.
Details
Vergleichen Sie für eine Tabelle mit gültigen Datentyperzwingungen auf der Seite Konvertierungsregeln in Standard-SQL die Spalte „Von Typ“ mit der Spalte „Erzwingen in“.
Beispiele für gültige Datentyperzwingungen:
- INT64 in NUMERIC, BIGNUMERIC, FLOAT64
- NUMERIC in BIGNUMERIC, FLOAT64
Diese Anweisung wird für externe Tabellen nicht unterstützt.
Ohne die IF EXISTS-Klausel gibt die Anweisung einen Fehler zurück, wenn die Tabelle keine Spalte mit diesem Namen enthält. Wenn die IF EXISTS-Klausel enthalten und der Spaltenname nicht vorhanden ist, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
Sie können Datentypen auch von restriktiveren in weniger restriktive parametrisierte Datentypen umwandeln. Sie können beispielsweise die maximale Länge eines Stringtyps erhöhen oder die Genauigkeit oder Skalierung eines numerischen Typs erhöhen.
Beispiele für gültige Änderungen parametrisierter Datentypen:
- NUMERIC(6,10) zu NUMERIC(8,12)
- NUMERIC zu BIGNUMERIC(40, 20)
- STRING(5) zu STRING(7)
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Tabelle. |
bigquery.tables.update |
Die zu ändernde Tabelle. |
Beispiele
Datentyp einer Spalte ändern
Im folgenden Beispiel wird der Datentyp der Spalte c1
von INT64
in NUMERIC
geändert:
CREATE TABLE dataset.table(c1 INT64); ALTER TABLE dataset.table ALTER COLUMN c1 SET DATA TYPE NUMERIC;
Datentyp eines Felds ändern
Im folgenden Beispiel wird der Datentyp eines der Felder in der Spalte s1
geändert:
CREATE TABLE dataset.table(s1 STRUCT<a INT64, b STRING>); ALTER TABLE dataset.table ALTER COLUMN s1 SET DATA TYPE STRUCT<a NUMERIC, b STRING>;
Genauigkeit ändern
Im folgenden Beispiel wird die Genauigkeit einer parametrisierten Datentypspalte geändert:
CREATE TABLE dataset.table (pt NUMERIC(7,2)); ALTER TABLE dataset.table ALTER COLUMN pt SET DATA TYPE NUMERIC(8,2);
ALTER VIEW SET OPTIONS
-Anweisung
Legt die Optionen für eine Ansicht fest.
Syntax
ALTER VIEW [IF EXISTS] view_name SET OPTIONS(view_set_options_list)
Argumente
IF EXISTS
: Wenn keine Ansicht mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.view_name
: Der Name der zu ändernden Ansicht. Siehe Tabellenpfadsyntax.view_set_options_list
: Die Liste der festzulegenden Optionen.
view_set_options_list
Mit der Optionsliste können Sie Ansichtsoptionen wie ein Label und eine Ablaufzeit festlegen. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.
Die Liste der Ansichtsoptionen müssen Sie im folgenden Format angeben:
NAME=VALUE, ...
NAME
und VALUE
müssen mit einer der folgenden Varianten kombiniert werden:
NAME |
VALUE |
Details |
---|---|---|
expiration_timestamp |
TIMESTAMP |
Beispiel: Dieses Attribut entspricht dem Attribut expirationTime der Tabellenressource. |
friendly_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut friendlyName der Tabellenressource. |
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut description der Tabellenressource. |
labels |
|
Beispiel: Dieses Attribut entspricht dem Attribut labels der Tabellenressource. |
VALUE
ist ein konstanter Ausdruck, der nur Literale, Abfrageparameter und Skalarfunktionen enthält.
Der konstante Ausdruck darf Folgendes nicht enthalten:
- Einen Verweis auf eine Tabelle
- Unterabfragen oder SQL-Anweisungen wie
SELECT
,CREATE
oderUPDATE
- Benutzerdefinierte Funktionen, Aggregatfunktionen oder Analysefunktionen
- Die folgenden Skalarfunktionen:
ARRAY_TO_STRING
REPLACE
REGEXP_REPLACE
RAND
FORMAT
LPAD
RPAD
REPEAT
SESSION_USER
GENERATE_ARRAY
GENERATE_DATE_ARRAY
Mit der Einstellung VALUE
wird der vorhandene Wert dieser Option für die Ansicht ersetzt, wenn diese vorhanden ist. Wenn Sie für VALUE
den Wert NULL
festlegen, wird der Wert der Ansicht für diese Option gelöscht.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde Ansicht. |
bigquery.tables.update |
Die zu ändernde Ansicht. |
Beispiele
Ablaufzeitstempel und Beschreibung für eine Ansicht festlegen
Im folgenden Beispiel wird der Ablaufzeitstempel für eine Ansicht auf sieben Tage nach dem Ausführungszeitpunkt der ALTER VIEW
-Anweisung festgelegt. Außerdem wird eine Beschreibung angegeben:
ALTER VIEW mydataset.myview SET OPTIONS ( expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY), description="View that expires seven days from now" )
ALTER MATERIALIZED VIEW SET OPTIONS
-Anweisung
Legt die Optionen für eine materialisierte Ansicht fest.
Syntax
ALTER MATERIALIZED VIEW [IF EXISTS] materialized_view_name SET OPTIONS(materialized_view_set_options_list)
Argumente
IF EXISTS
: Wenn keine materialisierte Ansicht mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.materialized_view_name
: Der Name der zu ändernden materialisierten Ansicht. Siehe Tabellenpfadsyntax.materialized_view_set_options_list
: Die Liste der festzulegenden Optionen.
materialized_view_set_options_list
In der Optionsliste können Sie Optionen für die materialisierte Ansicht festlegen, beispielsweise ob die Aktualisierung aktiviert ist, das Aktualisierungsintervall, ein Label und eine Ablaufzeit. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.
Geben Sie eine Optionsliste für die materialisierte Ansicht im folgenden Format an:
NAME=VALUE, ...
NAME
und VALUE
müssen mit einer der folgenden Varianten kombiniert werden:
NAME |
VALUE |
Details |
---|---|---|
enable_refresh |
BOOLEAN |
Beispiel: |
refresh_interval_minutes |
FLOAT64 |
Beispiel: |
expiration_timestamp |
TIMESTAMP |
Beispiel: Dieses Attribut entspricht dem Attribut expirationTime der Tabellenressource. |
friendly_name |
|
Beispiel: Dieses Attribut entspricht dem Attribut friendlyName der Tabellenressource. |
description |
|
Beispiel: Dieses Attribut entspricht dem Attribut description der Tabellenressource. |
labels |
|
Beispiel: Dieses Attribut entspricht dem Attribut labels der Tabellenressource. |
Mit der Einstellung VALUE
wird der vorhandene Wert dieser Option für die materialisierte Ansicht ersetzt, wenn diese vorhanden ist. Wenn Sie für VALUE
den Wert NULL
festlegen, wird der Wert der materialisierten Ansicht für diese Option gelöscht.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.get |
Die zu ändernde materialisierte Ansicht. |
bigquery.tables.update |
Die zu ändernde materialisierte Ansicht. |
Beispiele
Den Aktualisierungsstatus und das Aktualisierungsintervall für eine materialisierte Ansicht festlegen
Im folgenden Beispiel wird die Aktualisierung aktiviert und das Aktualisierungsintervall für eine materialisierte Ansicht auf 20 Minuten festgelegt:
ALTER MATERIALIZED VIEW mydataset.my_mv
SET OPTIONS (
enable_refresh=true,
refresh_interval_minutes=20
)
ALTER BI_CAPACITY SET OPTIONS
-Anweisung
Legt die Optionen für die BigQuery BI Engine-Kapazität fest.
Syntax
ALTER BI_CAPACITY `project_id.location_id.default` SET OPTIONS(bi_capacity_options_list)
Argumente
project_id
: Optionale Projekt-ID des Projekts, das von der BI Engine-Beschleunigung profitieren wird. Wenn nichts angegeben ist, wird die Abfrageprojekt-ID verwendet.location_id
: Der Standort, an dem Daten im Cache gespeichert werden müssen, mit dem Präfixregion-
. Beispiele:region-us
,region-us-central1
.bi_capacity_options_list
: Die Liste der festzulegenden Optionen.
bi_capacity_options_list
Die Optionsliste gibt eine Reihe von Optionen für die BigQuery BI Engine-Kapazität an.
Die Liste der Spaltenoptionen müssen Sie im folgenden Format angeben:
NAME=VALUE, ...
Die folgenden Optionen werden unterstützt:
NAME |
VALUE |
Details |
---|---|---|
size_gb |
INT64 |
Gibt die Größe der Reservierung in Gigabyte an. |
preferred_tables |
<ARRAY<STRING>> |
Liste der Tabellen, auf die Beschleunigungen angewendet werden sollen. Format:
project.dataset.table or dataset.table . Wenn kein Projekt angegeben ist, wird das Abfrageprojekt verwendet. |
Mit der Einstellung VALUE
wird der vorhandene Wert dieser Option für die BI Engine-Kapazität ersetzt, sofern vorhanden. Wenn Sie für VALUE
den Wert NULL
festlegen, wird der Wert für diese Option gelöscht.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.bireservations.update |
BI Engine-Reservierung |
Beispiele
BI Engine-Kapazität ohne bevorzugte Tabellen zuweisen
ALTER BI_CAPACITY `my-project.region-us.default` SET OPTIONS( size_gb = 250 )
BI-Kapazität freigeben
ALTER BI_CAPACITY `my-project.region-us.default` SET OPTIONS( size_gb = 0 )
Eine Reihe bevorzugter Tabellen aus der Reservierung entfernen
ALTER BI_CAPACITY `my-project.region-us.default` SET OPTIONS( preferred_tables = NULL )
BI-Kapazität mit Liste bevorzugter Tabellen zuweisen
ALTER BI_CAPACITY `my-project.region-us.default` SET OPTIONS( size_gb = 250, preferred_tables = ["data_project1.dataset1.table1", "data_project2.dataset2.table2"] )
Liste von bevorzugten Tabellen überschreiben, ohne die Größe zu ändern
ALTER BI_CAPACITY `region-us.default` SET OPTIONS( preferred_tables = ["dataset1.table1", "data_project2.dataset2.table2"] )
DROP SCHEMA
-Anweisung
Löscht ein Dataset.
Syntax
DROP SCHEMA [IF EXISTS]
[project_name.]dataset_name
[ CASCADE | RESTRICT ]
Argumente
IF EXISTS
: Wenn kein Dataset mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.project_name
: Der Name des Projekts, zu dem das Dataset gehört. Die Standardeinstellung ist das Projekt, das diese DDL-Anweisung ausführt.dataset_name
: Der Name des zu löschenden Datasets.CASCADE
: Löscht das Dataset und alle Ressourcen innerhalb des Datasets, z. B. Tabellen, Ansichten und Funktionen. Sie müssen die Berechtigung haben, die Ressourcen zu löschen. Andernfalls gibt die Anweisung einen Fehler zurück. Eine Liste der BigQuery-Berechtigungen finden Sie unter Vordefinierte Rollen und Berechtigungen.RESTRICT
: Löscht das Dataset nur, wenn es leer ist. Andernfalls wird ein Fehler zurückgegeben. Wenn Sie wederCASCADE
nochRESTRICT
angeben, ist das StandardverhaltenRESTRICT
.
Details
Die Anweisung wird am Speicherort des Datasets ausgeführt, wenn es vorhanden ist, es sei denn, Sie geben den Ort in den Abfrageeinstellungen an. Weitere Informationen finden Sie unter Standort angeben.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.datasets.delete |
Das zu löschende Dataset. |
bigquery.tables.delete
|
Das zu löschende Dataset. Wenn das Dataset leer ist, ist diese Berechtigung nicht erforderlich. |
Beispiele
Im folgenden Beispiel wird das Dataset mit dem Namen mydataset
gelöscht. Wenn das Dataset nicht vorhanden oder nicht leer ist, gibt die Anweisung einen Fehler zurück.
DROP SCHEMA mydataset
Im folgenden Beispiel werden das Dataset mit dem Namen mydataset
und alle Ressourcen in diesem Dataset gelöscht. Wenn das Dataset nicht vorhanden ist, wird kein Fehler zurückgegeben.
DROP SCHEMA IF EXISTS mydataset CASCADE
DROP TABLE
-Anweisung
Löscht eine Tabelle oder einen Tabellenklon.
Syntax
DROP TABLE [IF EXISTS] table_name
Argumente
IF EXISTS
: Wenn keine Tabelle mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_name
. Der Name der zu löschenden Tabelle. Siehe Tabellenpfadsyntax.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.delete |
Die zu löschende Tabelle. |
bigquery.tables.get |
Die zu löschende Tabelle. |
Beispiele
Tabelle löschen
Im folgenden Beispiel wird eine Tabelle mit dem Namen mytable
in mydataset
gelöscht:
DROP TABLE mydataset.mytable
Wenn der Tabellenname nicht im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Error: Not found: Table myproject:mydataset.mytable
Tabelle nur dann löschen, wenn sie vorhanden ist
Im folgenden Beispiel wird eine Tabelle mit dem Namen mytable
in mydataset
nur dann gelöscht, wenn die Tabelle vorhanden ist. Wenn der Tabellenname im Dataset nicht vorhanden ist, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
DROP TABLE IF EXISTS mydataset.mytable
DROP SNAPSHOT TABLE
-Anweisung
Löscht einen Tabellen-Snapshot.
Syntax
DROP SNAPSHOT TABLE [IF EXISTS] table_snapshot_name
Argumente
IF EXISTS
: Wenn kein Tabellen-Snapshot mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_snapshot_name
: Der der Name des zu löschenden Tabellen-Snapshots. Siehe Tabellenpfadsyntax.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.deleteSnapshot |
Der zu löschende Tabellen-Snapshot. |
Beispiele
Tabellen-Snapshot löschen: schlägt fehl, wenn er nicht vorhanden ist
Im folgenden Beispiel wird der Tabellen-Snapshot mit dem Namen mytablesnapshot
im Dataset mydataset
gelöscht:
DROP SNAPSHOT TABLE mydataset.mytablesnapshot
Wenn der Tabellen-Snapshot im Dataset nicht vorhanden ist, wird der folgende Fehler zurückgegeben:
Error: Not found: Table snapshot myproject:mydataset.mytablesnapshot
Tabellen-Snapshot löschen: ignorieren, wenn er nicht vorhanden ist
Im folgenden Beispiel wird der Tabellen-Snapshot mytablesnapshot
im Dataset mydataset
gelöscht.
DROP SNAPSHOT TABLE IF EXISTS mydataset.mytablesnapshot
Wenn der Tabellen-Snapshot im Dataset nicht vorhanden ist, wird keine Aktion ausgeführt und kein Fehler zurückgegeben.
Informationen zum Erstellen von Tabellen-Snapshots finden Sie unter SNAPSHOT-TABELLE ERSTELLEN.
Informationen zum Wiederherstellen von Tabellen-Snapshots finden Sie unter TABELLEn-KLON ERSTELLEN.
DROP EXTERNAL TABLE
-Anweisung
Löscht eine externe Tabelle.
Syntax
DROP EXTERNAL TABLE [IF EXISTS] table_name
Argumente
IF EXISTS
: Wenn keine externe Tabelle mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.table_name
: Der Name der zu löschenden externen Tabelle. Siehe Tabellenpfadsyntax.
Details
Wenn table_name
vorhanden ist, aber keine externe Tabelle ist, gibt die Anweisung den folgenden Fehler zurück:
Cannot drop table_name which has type TYPE. An
external table was expected.
Mit der DROP EXTERNAL
-Anweisung wird nur die Definition der externen Tabelle aus BigQuery entfernt. Die am externen Speicherort hinterlegten Daten sind davon nicht betroffen.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.delete |
Die zu löschende externe Tabelle. |
bigquery.tables.get |
Die zu löschende externe Tabelle. |
Beispiele
Im folgenden Beispiel wird die externe Tabelle mit dem Namen external_table
aus dem Dataset mydataset
gelöscht. Wenn die externe Tabelle nicht vorhanden ist, wird ein Fehler zurückgegeben.
DROP EXTERNAL TABLE mydataset.external_table
Im folgenden Beispiel wird die externe Tabelle mit dem Namen external_table
aus dem Dataset mydataset
gelöscht. Wenn die externe Tabelle nicht vorhanden ist, wird kein Fehler zurückgegeben.
DROP EXTERNAL TABLE IF EXISTS mydataset.external_table
DROP VIEW
-Anweisung
Löscht eine Ansicht.
Syntax
DROP VIEW [IF EXISTS] view_name
Argumente
IF EXISTS
: Wenn keine Ansicht mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.view_name
: Der Name der zu löschenden Ansicht. Siehe Tabellenpfadsyntax.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.delete |
Die zu löschende Ansicht. |
bigquery.tables.get |
Die zu löschende Ansicht. |
Beispiele
Ansicht löschen
Im folgenden Beispiel wird eine Ansicht namens myview
in mydataset
gelöscht:
DROP VIEW mydataset.myview
Wenn der Ansichtsname im Dataset nicht vorhanden ist, wird der folgende Fehler zurückgegeben:
Error: Not found: Table myproject:mydataset.myview
Ansicht nur löschen, wenn die Ansicht vorhanden ist
Im folgenden Beispiel wird eine Ansicht mit dem Namen myview
in mydataset
nur dann gelöscht, wenn die Ansicht vorhanden ist. Wenn der Ansichtsname nicht im Dataset vorhanden ist, wird kein Fehler zurückgegeben und keine Aktion ausgeführt.
DROP VIEW IF EXISTS mydataset.myview
DROP MATERIALIZED VIEW
-Anweisung
Löscht eine materialisierte Ansicht.
Syntax
DROP MATERIALIZED VIEW [IF EXISTS] mv_name
Argumente
IF EXISTS
: Wenn keine materialisierte Ansicht mit diesem Namen vorhanden ist, hat die Anweisung keine Auswirkungen.mv_name
: Der Name der zu löschenden materialisierten Ansicht. Siehe Tabellenpfadsyntax.
Erforderliche Berechtigungen
Diese Anweisung erfordert die folgenden IAM-Berechtigungen:
Berechtigung | Ressource |
---|---|
bigquery.tables.delete |
Die zu löschende materialisierte Ansicht. |
bigquery.tables.get |
Die zu löschende materialisierte Ansicht. |
Beispiele
Eine materialisierte Ansicht löschen
Im folgenden Beispiel wird eine materialisierte Ansicht mit dem Namen my_mv
in mydataset
gelöscht:
DROP MATERIALIZED VIEW mydataset.my_mv
Wenn der Name der materialisierten Ansicht nicht im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:
Error: Not found: Table myproject:mydataset.my_mv
Wenn Sie eine materialisierte Ansicht in einem anderen Projekt löschen, müssen Sie das Projekt, das Dataset und die materialisierte Ansicht im folgenden Format angeben: `project_id.dataset.materialized_view`
(einschließlich der Backticks, wenn project_id
Sonderzeichen enthält); zum Beispiel