การถ่ายโอนข้อมูล Bigquery ล้มเหลวหากตารางเป้าหมายไม่ได้แบ่งพาร์ติชันรายวัน

ฉันมีการตั้งค่างานการถ่ายโอนข้อมูล 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 ซึ่งยังไม่ได้รับการจัดทำเป็นเอกสารหรือไม่


person matthieu.cham    schedule 11.11.2020    source แหล่งที่มา
comment
ฉันขอแนะนำให้คุณแจ้งปัญหาที่เครื่องมือติดตามปัญหา GCP เช่นนี้ ดูเหมือนจะไม่ใช่พฤติกรรมปกติ   -  person rsalinas    schedule 13.11.2020
comment
ฉันทำแล้ว และทีมสนับสนุน GCP กำลังทำงานอยู่ ฉันจะอัปเดตคำถามนี้เมื่อจะได้รับการแก้ไข   -  person matthieu.cham    schedule 13.11.2020
comment
นี่คือคำตอบจากทีมสนับสนุนของ Google เกี่ยวกับข้อผิดพลาดในการแบ่งพาร์ติชันที่เข้ากันไม่ได้ ทีมวิศวกรรม BigQuery ได้ระบุปัญหาแล้วและกำลังดำเนินการแก้ไข ทีมงานประเมินว่าการแก้ไขนี้อาจพร้อมใช้ในช่วงปลายสัปดาห์แรกของเดือนธันวาคม   -  person matthieu.cham    schedule 24.11.2020


คำตอบ (1)


หลังจากการสืบสวนและแก้ไขข้อบกพร่องในทีม GCP เป็นเวลาสองสามสัปดาห์ ปัญหาก็ได้รับการแก้ไขแล้วตั้งแต่วันที่ 7 ธันวาคม 2020 จริงๆ แล้วมันเป็นข้อบกพร่องในบริการ Big Query Transfer

person matthieu.cham    schedule 07.12.2020