Bigquery目前只允許按日期進行分區。對錶進行分區
Lets supose我有一個與inserted_timestamp
字段的10億錶行。讓我們說這個領域有1年前的日期。
將現有數據移動到新的分區表的正確方法是什麼?
編輯
我看到有Java的一個優雅的解決方案與版本< 2.0 Sharding BigQuery output tables還闡述了在BigQuery partitioning with Beam streams那就是參數化窗口數據表名(或分區後綴)。
但是我錯過了012x在2.x光束項目也沒有關於從python序列化函數獲取窗口時間的示例。
我試圖在管道上進行分區,但是如果大量分區失敗(運行100,但失敗1000)。
這是我的代碼,就我:
( p
| 'lectura' >> beam.io.ReadFromText(input_table)
| 'noheaders' >> beam.Filter(lambda s: s[0].isdigit())
| 'addtimestamp' >> beam.ParDo(AddTimestampDoFn())
| 'window' >> beam.WindowInto(beam.window.FixedWindows(60))
| 'table2row' >> beam.Map(to_table_row)
| 'write2table' >> beam.io.Write(beam.io.BigQuerySink(
output_table, #<-- unable to parametrize by window
dataset=my_dataset,
project=project,
schema='dia:DATE, classe:STRING, cp:STRING, import:FLOAT',
create_disposition=CREATE_IF_NEEDED,
write_disposition=WRITE_TRUNCATE,
)
)
)
p.run()
https://stackoverflow.com/questions/38993877/migrating-from-non-partitioned-to-partitioned-tables應該是相關幾個方法。此外,我認爲你應該能夠使用JSON或AVRO而不是CSV來避免使用平面文件。 –
@NhanNguyen,剛剛編輯我的問題更具體。在<2.0存在一個優雅的解決方案,我錯過了> 2.x。感謝你的鏈接,我跟着它,是非常相關的問題。再次感謝。 – danihp