2016-06-05 6 views
1

Ich habe viele Tabellen nach Datum sortiert. Ich erkunde den Weg, um weiterzugehen und stattdessen die neuen "Partitioned Tables" zu verwenden. Ich habe diese Referenz für die Umwandlung von Tabellen gefunden: https://cloud.google.com/bigquery/docs/creating-partitioned-tables#converting_dated_tables_into_a_partitioned_tableUmwandlung in neue "Partitionierte Tabellen" von bestehenden System

Aber, wie ich zu vorhandenen Tabellen beziehen (Laden von Daten oder Abfragen) viele Prozesse, die ich für einen schrittweisen Übergang Ansatz suchen. Bedeutung: Ich möchte den Ladevorgang und die Tabellendefinition am 1. ändern und danach alle zugehörigen Prozesse langsam ändern.

  1. Wie soll ich über diesen Übergang gehen? (Wir haben die Möglichkeit in Betracht gezogen und ausgeschlossen alles zu duplizieren und jeden Prozess zweimal wegen offensichtlichen Gründen zu halten.)
  2. Gibt es eine Möglichkeit, die alten Tabellennamen Konvention (MyTable_YYYYMMDD) zu verwenden, wenn eine Partition der neue Abfrage Übergangstabelle?
  3. Kann ich die älteren Wildcard-Funktionen der Tabelle verwenden, um sie abzufragen, bis ich alle meine Abfragevorlagen transformiert habe?
  4. Gibt es vorhandene partitionierte Tabellen in einem öffentlichen Dataset, in denen wir experimentieren können?

Dank

Antwort

0

Meine paar Cent:

Kann ich die älteren Tabelle Wildcard-Funktionen verwenden, um es abzufragen, bis ich alle meine Abfragevorlagen umwandeln ?

Direkt vor neuen partitionierten Tabelle - Nein. Sie werden höchstwahrscheinlich etwas bekommen wie „table wildcards matches no table

Gibt es eine Möglichkeit, die alten Tabellennamen Konvention (MyTable_YYYYMMDD) zu verwenden, wenn eine Partition von Abfragen der neue überführte Tisch?

Die Option, die ich sehe, ist jeweils täglich Ansichten nach new_partitioned Tabelle mit dem Namen zu erstellen, aber folgenden new_partitioned_YYYYMMDD Namensgebung.
Während Sie die neue Partitionierungsfunktion verwenden, verwenden Sie immer noch die alte Syntax, bevor Sie die vollständige Migration durchführen.
Dies bringt ein wenig zusätzliche Kopfschmerzen, wie Sie sicherstellen müssen, dass Sie täglich tägliche Ansichten für neue Partitionen erstellt haben - aber wenn Sie nach temporären Lösung suchen - sollte dies nicht große Sache sein.

Schließlich kurzer Kommentar auf Referenz für die Umwandlung von Tabellen:

Es ist nicht klar in der Dokumentation angegeben, aber sieht aus wie Sie nicht nur bq partition Befehl verwenden, können bestehende sharded neue partioned zu konvertieren. Zuerst müssen Sie diese partitionierte Tabelle erstellen. Wenn nicht - Sie werden neue Tabelle ohne Schema bekommen, so dass es nutzlos sein wird. Es könnte ein Fehler sein - nicht wissen

+0

Ich habe eine nicht sharded, nicht partitionierte Tabelle, wie zu partitioniert bekommen? – Pentium10

+0

easy: o) - 1. partitionierte Tabelle mit dem gleichen Schema erstellen 2. Wählen Sie aus Ihrer ursprünglichen Tabelle (Partition nach Partition) in neue partitionierte Tabelle. Wenn Sie weitere Informationen benötigen - Neue Frage als Kommentar zu veröffentlichen ist schwierig für eine detaillierte Antwort –

+0

Gibt es bereits partitionierte Tabellen in einem öffentlichen Datensatz, in dem wir experimentieren können? –

1

Dies ist nicht genau das, was Sie wollen, aber kann den Zweck erfüllen.Mit Standard-SQL unterstützt BigQuery das Äquivalent von Tabelle Wildcard Funktionen:

Dokumentation für diese Funktion in Kürze verfügbar sein wird, aber zusammenfassen:

Wir bieten eine Pseudospalte _TABLE_SUFFIX, die einen Weg zur Bewältigung der Tabelle liefert . Mit der folgenden Abfrage können Sie beispielsweise aus den Tabellen myproject.mydataset.20150105 und myproject.mydataset.20150106 lesen (unter der Annahme, dass Wert1 ein Feld in beiden ist).

SELECT _TABLE_SUFFIX AS TABLE_NAME SUM (Wert1) FROM myproject.mydataset.* WHERE _TABLE_SUFFIX = '20.150.105' OR _TABLE_SUFFIX = '20.150.106' GROUP BY 1;

Für Ihren Anwendungsfall:

Sie könnten zunächst Ihre Anfragen gegen Datum sharded Tabellen konvertieren zu _TABLE_SUFFIX Pseudospalte zu verwenden. Wenn Sie diese Tabellen dann in partitionierte Tabellen konvertieren können. Nach diesem Punkt benötigen Sie eine kleine Änderung an Ihren Skripten, um die Partitionierungs-Pseudospalte zu verwenden (da der Name der Pseudospalte in diesen beiden Fällen ein wenig anders ist).

+0

erstellt, wenn Sie sagen: "Nach diesem Punkt benötigen Sie eine geringfügige Änderung an Ihren Skripts, um die Partitionierungs-Pseudospalte zu verwenden ..." meinen Sie die Ladeprozesse oder meine Abfragen? –

+0

Wie würde Ihre Beispielabfrage mit einem Tabellennamen arbeiten, der Präfix vor dem Datum enthält, z. B. myproject.mydataset.mytablename_YYYYMMDD? –

Verwandte Themen