2017-07-03 1 views
0

Ich habe folgende Voraussetzung.Gibt es eine Metadatentabelle, um zu überprüfen, ob die Tabelle in BigQuery partitioniert ist?

Wir haben 1400 Tabellen in BQ basierend auf einer bestimmten funktionalen Gruppierung zusammengefasst. Maximum von Diese einzelnen sharded Tabellen sind auch für DAY zeitpartitioniert.

Kleinere Tabellen sind nicht zeitpartitioniert.

Ich versuche, Ansichten in BigQuery dynamisch zu erstellen, indem Sie eine UNION aller sharded Tabellen ausführen und eine WHERE-Filterbedingung für _partition Zeit schreiben.

Aber das Problem ist, es könnte kleinere Tabellen geben, die nicht zeitpartitioniert sind, schlägt die Abfrage fehl.

Es werden täglich viele weitere Tabellen erstellt und ich kann mich nicht mit einer statischen Ausschlusslösung zufrieden geben, da dies eine manuelle Pflege einer Datei mit Tabellennamen usw. erfordert. Apache Beam + BQ verwendet die eingehenden Daten und erstellt neue formatierte Tabellen für neuere Funktionsgruppen ohne manuellen Eingriff)

Ich versuche, die nicht zeitpartitionierten Tabellen mit dem Dienstprogramm bq auszuschließen, um mehr als 1000 Mal mit BQ zu verbinden, um zu überprüfen, ob eine Tabelle zeitpartitioniert ist.

bq zeigen --format = prettyjson und überprüfen Sie die "timepartitioning" "Typ" abgelegt.

Dies ist sehr langsam und ist nicht so schnell, wie ich es erwarte. (mehr als 30 Minuten)

Ich habe versucht, die TABLES_SUMMARY, aber es hat nicht die Partitionierung Informationen.

ich auch SELECT partition_id von [mydataset.table1 $ PARTITIONS_SUMMARY] geprüft haben;

Aber das funktioniert, wenn die Tabelle bereits partitioniert ist.

Grüße.

Antwort

0

Leider gibt es keine Möglichkeit, dies dynamisch zu bestimmen.

Als eine Umgehungslösung würde ich vorschlagen, Ihre partitionierten Tabellen und Ihre nicht partitionierten Tabellen in verschiedenen Datasets ODER enthalten Informationen darüber, ob die Tabelle in seinem Namen partitioniert ist.

Sie können auch eine Liste von Tabellenpräfixen verwalten, von denen bekannt ist, dass sie partitioniert sind (oder nicht partitioniert sind, wenn dies einfacher zu verwalten ist).

Sie können auch eine Feature-Anforderung für den öffentlichen Issue-Tracker für BigQuery öffnen: https://issuetracker.google.com/issues/new?component=187149&template=0

Verwandte Themen