ฉันมีการตั้งค่างานการถ่ายโอนข้อมูล Bigquery ไปยังตารางปลายทางซึ่งแบ่งพาร์ติชันตามเดือน ตารางถูกสร้างขึ้นด้วยคำสั่งต่อไปนี้:
bq mk --table \
--schema schema.json \
--time_partitioning_field createdAt \
--time_partitioning_type MONTH \
myproject:mydataset.MyTable
งานการถ่ายโอนข้อมูลถูกสร้างขึ้นด้วยไคลเอนต์ Python BQDTS เช่นนี้:
parent = f"projects/myproject/locations/{location}"
baseparams = {
"file_format": "CSV",
"ignore_unknown_values": True,
"field_delimiter": ",",
"skip_leading_rows": "0",
"allow_jagged_rows": True,
}
params = Struct()
params_content = baseparams.copy()
params_content[
"data_path_template"
] = f"gs://mybucket/**/*.csv"
params_content["destination_table_name_template"] = "MyTable"
params.update(params_content)
tc_dict = {
"display_name": target_display_name,
"destination_dataset_id": "mydataset",
"data_source_id": "google_cloud_storage",
"schedule": "every 24 hours",
"params": params,
}
tc = bigquery_datatransfer_v1.types.TransferConfig(**tc_dict)
response = client.create_transfer_config(
request={"parent": parent, "transfer_config": tc}
)
อย่างที่คุณเห็นไม่มีการระบุการแบ่งพาร์ติชั่นในคำจำกัดความของงาน แต่จะระบุไว้ในตารางฐานข้อมูลเท่านั้นตามที่ควรจะเป็นไปตาม เอกสารประกอบ:
ตัวเลือกการแบ่งพาร์ติชัน การถ่ายโอน Cloud Storage และ Amazon S3 สามารถเขียนลงในตารางปลายทางแบบแบ่งพาร์ติชันหรือไม่แบ่งพาร์ติชันได้ การแบ่งพาร์ติชันตารางใน BigQuery มีสองประเภท:
ตารางที่แบ่งพาร์ติชัน: ตารางที่แบ่งพาร์ติชันตามคอลัมน์ ประเภทคอลัมน์ต้องเป็นคอลัมน์ TIMESTAMP หรือ DATE หากตารางปลายทางถูกแบ่งพาร์ติชันบนคอลัมน์ คุณจะระบุคอลัมน์การแบ่งพาร์ติชันเมื่อคุณสร้างตารางปลายทางและระบุสคีมาของตารางนั้น
งานนี้ดำเนินการสำเร็จมาหลายวันแล้ว จนถึงสัปดาห์ที่แล้ว (ดำเนินการสำเร็จครั้งล่าสุดเมื่อ 2020-11-04) คืนนี้ (10-11-2563) งานล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อกำหนดการแบ่งพาร์ติชันตารางที่เข้ากันไม่ได้ ตารางปลายทางมีอยู่พร้อมกับช่วงเวลาข้อกำหนดการแบ่งพาร์ติชั่น (ประเภท: MONTH, ฟิลด์: createdAt) แต่ข้อกำหนดการโอนพาร์ติชันเป้าหมายการโอนคือช่วงเวลา (ประเภท: DAY, ฟิลด์: createdAt) โปรดลองอีกครั้งหลังจากอัปเดตตารางปลายทางหรือข้อกำหนดการแบ่งพาร์ติชันการถ่ายโอน
ฉันได้พยายามสร้างตารางและงานขึ้นใหม่ด้วยข้อกำหนดดังกล่าว และแน่นอนว่าจะล้มเหลวทุกครั้งที่ประเภทการแบ่งพาร์ติชันตารางปลายทางคือ MONTH อย่างไรก็ตาม วิธีนี้ยังคงใช้ได้หากประเภทการแบ่งพาร์ติชันเป็น DAY สิ่งที่ทำให้ฉันสับสนมากที่สุดคือข้อความข้อกำหนดการโอนพาร์ติชันเนื่องจากพารามิเตอร์ดังกล่าวดูเหมือนจะไม่มีอยู่ในเอกสารประกอบ
มันเป็นการเปลี่ยนแปลงที่ทำลาย API ล่าสุดใน GCP ซึ่งยังไม่ได้รับการจัดทำเป็นเอกสารหรือไม่