BigQuery 表的架构与配方不匹配

Posted

技术标签:

【中文标题】BigQuery 表的架构与配方不匹配【英文标题】:The schema of the BigQuery table does not match the recipe 【发布时间】:2018-12-26 19:33:48 【问题描述】:

我目前正在研究从 bigquery 流向 Tableau 的 BI 堆栈。我正在尝试使用 Dataprep 删除不必要的列并加入 bigquery 中的表以创建一个“主”表,然后输入 Tableau。 bigquery 中的表大约每 8 小时更新一次,我正在尝试在 dataprep 中为主表创建类似的计划。

运行作业或什至尝试从连接的表中抽取样本都会产生此错误。

java.lang.IllegalStateException: The schema of the BigQuery table does not match the recipe.

不知道我应该如何解决这个问题。我比较了错误中的两列(预期与实际列),发现它期望多一列。为什么会这样?

为了比较,我有一个 postgres 数据库与相同的数据并行运行,并且能够毫无问题地进行相同的连接。

Also, here is how the overall flow looks in dataprep.

感谢任何帮助。

谢谢,

艺术

【问题讨论】:

您能否在 BigQuery UI 中检查目标表中的列并将其与错误进行比较(我还在列表末尾看到了一个额外的浮点字段)。 BigQuery 可能对您的表实施不同于 postgress 的限制,这就是您看到错误的原因 您好 Tamir,感谢您的快速回复。所以问题甚至在将数据提交到目标表之前就出现了。尝试运行示例时出现相同的错误,因此不确定它是否与目标表相关(我运行作业时也创建了目标表)。奇怪的是,我实际上成功运行了一次,它在计划刷新时开始失败。 您是否尝试在 BigQuery UI 中检查查询历史记录或作业历史记录以查看是否可以获得更详细的错误消息?如果您还可以尝试使用数据打印插入记录并尝试直接在 BigQuery 中运行它可能有助于查明问题 【参考方案1】:

有时数据源可能会更改列(添加或删除列)。重新导入数据即可解决此问题。

【讨论】:

【参考方案2】:

Dataprep 使用 ML 算法来帮助您,但大多数情况下会自动解释类型,并且当您执行新配方时,列的类型会更改。因此,您必须做的最后一个方法是“更改类型”,以确保 dataprep 列与 BigQuery 列具有相同的类型。

【讨论】:

以上是关于BigQuery 表的架构与配方不匹配的主要内容,如果未能解决你的问题,请参考以下文章

sql [BigQuery - Facebook产品目录]查询para obtenerelcatálogodeproductos de Kichink。 #facebook #bigqu

SQL BigQuery - 比较两个表的总计数

如何通过 Java 程序获取 Bigquery 表的架构?

使用 bigquery 中的 bigquery select 语句的 JSON 格式的现有表的架构

如何通过 Terraform 管理 BigQuery 表的架构更改

将 BigQuery 结果与 FCM 结合使用