2016-06-10 21 views
2

Ich habe Tabellen mit dem gleichen Schema tab1 und tab1_partitioned, wo letztere nach Tag partitioniert ist.BigQuery einfügen in eine partitionierte Tabelle aus einer vorhandenen Tabelle

Ich versuche, Daten in die partitionierten Tabelle mit dem folgenden Befehl ein:

bq query --allow_large_results --replace --noflatten_results --destination_table 'advertiser.development_partitioned$20160101' 'select * from advertiser.development where ymd = 20160101'; 

aber ich bekomme die folgende Fehlermeldung:

BigQuery error in query operation: Error processing job 'total-handler-133811:bqjob_r78379ac2513cb515_000001553afb7196_1': Provided Schema does not match Table 

Beide haben genau das gleiche Schema, und ich wirklich don verstehe nicht, warum ich diesen Fehler bekomme. Kann jemand mein Problem beleuchten?

In der Tat, ich würde es vorziehen, wenn BigQuery die dynamische Partitionierung Einsatz unterstützt, die in Hive unterstützt wird, aber einige Tage der Suche scheinen zu zeigen ist nicht möglich: -/

Antwort

3

Das Verhalten, das Sie sehen werden, ist aufgrund Wie behandeln wir Dispositionen bei der Verwendung von Tabellenpartitionen?

Sie sollten in der Lage sein, mit einer WRITE_APPEND-Disposition an die Partition anzuhängen, um die Abfrage zu durchlaufen.

bq query --allow_large_results --append_table --noflatten_results --destination_table 'advertiser.development_partitioned$20160101' 'select * from advertiser.development where ymd = 20160101'; 

Es gibt einige Komplikationen machen es mit --replace arbeiten, aber wir suchen in einer verbesserten Schema Unterstützung für Tabellenpartitionen zu diesem Zeitpunkt.

Bitte lassen Sie mich wissen, wenn dies für Sie nicht funktioniert. Vielen Dank!

Um den anderen Teil Ihrer Frage zu dynamischer Partitionierung zu beantworten - wir planen, reichere Varianten der Partitionierung zu unterstützen, und wir glauben, dass sie die Mehrheit der Anwendungsfälle bewältigen werden.

+0

Danke, Ihr Vorschlag funktioniert. Prost – gire

+0

ein zusätzlicher Punkt in Bezug auf die dynamische Partitionierung: Was ist der beste Weg, um vorhandene Daten in eine partitionierte bigquery Tabelle einzufügen? Unsere vorhandene Tabelle in Hadoop enthält viele Daten und ist bereits partitioniert. – gire

+0

Wenn Sie Daten in vorhandenen Shaping-Tabellen für BigQuery-Daten haben, können Sie sie mit dem Befehl bq cp in die partitionierte Tabelle kopieren. Wenn Sie Daten außerhalb der BigQuery haben, können Sie sie in BigQuery-Tabellen laden, indem Sie einen Ladejob verwenden, der als Ziel in eine Tabellenpartition schreibt (Beispiel: Tabelle $ 20160615). Dies würde sicherstellen, dass Daten in der Partition Ihrer Wahl landen. https://cloud.google.com/bigquery/docs/creating-partitioned-tables#restating_data_in_a_partition –

Verwandte Themen