You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery非分区表迁移至分区表数据缺失问题求助

BigQuery跨表迁移数据量不符的排查方案

核心排查点

  • 先确认导出数据是否完整
    别只看文件大小,先核对原表和GCS文件的记录数:

    • 用bq query --use_legacy_sql=false "SELECT COUNT(*) FROM \原项目ID.原数据集ID.原表名`"`拿到原表准确记录数。
    • 如果是每行一条的JSON,用gsutil cat gs://你的存储桶名/导出路径/*.json | wc -l统计总记录数;如果是嵌套JSON,用gsutil cat gs://你的存储桶名/导出路径/*.json | jq -c '.[]' | wc -l统计。
      如果导出的记录数本来就不够,检查导出参数:有没有加--destination_format=NEWLINE_DELIMITED_JSON?导出任务有没有失败的分片?有没有不小心加了过滤条件?
  • 检查导入作业的隐性错误
    任务显示成功不代表所有记录都导入了:

    • 去BigQuery的作业历史找到对应导入作业,看统计信息里的「输入记录数」「写入记录数」「拒绝记录数」「错误数」。
    • 如果有拒绝记录,下载错误日志看原因:大概率是分区字段问题(比如原表分区字段有null、格式不匹配)、字段类型不兼容(比如原表字符串转新表日期失败)、JSON格式错误(缺引号、逗号错位)。
  • 确认通配符是否覆盖所有文件
    不管用数据传输任务还是load_table_from_uri,检查通配符是否匹配所有304个文件:

    • 用gsutil ls gs://你的存储桶名/导出路径/*列出所有文件,对比导入时用的通配符(比如是不是写成了export-00*.json漏了后面的分片),有没有文件在子目录里没被匹配到。
  • 排查分区表的写入限制
    如果是时间分区表:

    • 检查原表分区字段的取值,有没有超出BigQuery允许的分区范围(比如日期太旧/太新)。
    • 确认导入时指定的time_partitioning_field字段名是否正确,有没有写错导致部分记录无法匹配分区被丢弃。

快速验证小技巧

  1. 随机挑几个GCS的JSON文件,用bq load手动导入临时表,对比文件记录数和临时表记录数,判断是个别文件有问题还是整体导入逻辑出问题。
  2. 检查导出任务的历史日志,看有没有中途中断、分片生成失败的情况。

内容的提问来源于stack exchange,提问作者Sergio Mujica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:15:12