2016-11-24 3 views
1

Ich habe eine Datenbank, die Datensätze zurück bis 2014 hat, dass ich es zu BigQuery migrieren muss, und ich denke, dass die Verwendung der partitionierten Tabellen Funktion bei der Leistung der Datenbank hilft.Wie Sie historische Daten in ihre jeweiligen Partitionen einfügen

Bisher habe ich eine kleine Probe der realen Daten über die Web-UI geladen, und während die Tabelle bereits partitioniert war, gingen alle Daten auf eine einzelne Partition mit dem Datum, an dem ich die Abfrage ausgeführt hatte erwartet, um fair zu sein.

Ich suchte die Dokumentation Seiten und ich lief in this, die ich nicht sicher bin, ob das, was ich suche.

Ich habe zwei Fragen:

1) In dem obigen Beispiel, sie nutzen die Dekorateur auf einer SELECT Abfrage, aber kann ich es auf einer INSERT Abfrage als auch?

2) Ich verwende die Python client, um mit der BigQuery API zu verbinden, und ich, während ich die table.insert_data Methode gefunden habe, konnte ich nichts finden, das speziell auf die Partitionen verweist, und ich frage mich, ob ich habe es verpasst oder ich muss die Abfrage-API verwenden, um auch Daten einzufügen.

Antwort

1

diese Suchte ein bisschen mehr:

1) Ich glaube nicht, ich habe es geschafft, überhaupt eine INSERT Abfrage auszuführen, aber das ist für mich strittig, weil ..

2) Turns darauf hin, dass ist es möglich, in den Partitionen mit dem Python-Client direkt einfügen, aber es war mir nicht klar:

ich diesen Schnipsel wurde mit ein paar Daten in eine Tabelle einzufügen:

from google.cloud import bigquery 

items = [ 
    (1, 'foo'), 
    (2, 'bar') 
] 
client = bigquery.Client() 
dataset = client.dataset('<dataset>') 
table = dataset.table('<table_name>') 
table.reload() 
print table.insert_data(items) 

Der Schlüssel ist das Anhängen eines $ und ein Datum (etwa 20161201) auf den Tabellennamen in der Auswahl, etwa so:

table = dataset.table('<table_name>$20161201') 

Und es sollte in die richtige Partition einzufügen.

+0

Bei dem Versuch, so zu verfahren, habe ich eine BadRequest: 'Sie können nur innerhalb von 31 Tagen in der Vergangenheit und 16 Tagen in der Zukunft relativ zum aktuellen Datum auf Partitionen streamen.Eine mögliche Problemumgehung? – Trolldejo

+0

Es tut mir leid, aber es stellte sich heraus, dass wir mit der Implementierung von BigQuery in unserem Projekt nicht vorangekommen sind und ich war nicht auf dieses spezielle Problem gestoßen, als ich damit experimentierte. Es könnte nützlicher sein, wenn Sie eine neue Frage stellen und einen Link zu diesem Link erstellen. – HardDiskD

+0

Haben Sie Ihren Punkt, lohnt sich nicht eine neue Frage imho öffnen. Workarounds werden in der GCP BQ-Dokumentation vorgeschlagen. Der beste Rat ist die Verwendung von bq als Befehlszeile ... – Trolldejo

Verwandte Themen