Google bigquery 试图通过两列中的ID联接两个表(错误:运算符=的签名不匹配,参数类型为:INT64,ARRAY<;INT64>;)

Google bigquery 试图通过两列中的ID联接两个表(错误:运算符=的签名不匹配,参数类型为:INT64,ARRAY<;INT64>;),google-bigquery,Google Bigquery,通过这些列连接表时遇到问题。似乎c.vid列是数组,而d.associations.associatedvids是INT64类型。将数组转换为INT64的最佳方式是什么?乍一看,它们看起来一模一样。我是从博士后毕业的,我不能把我的头绕在它身上。有人有什么想法吗 这就是错误: No matching signature for operator = for argument types: INT64, ARRAY<INT64>. Supported signatures: ANY =

通过这些列连接表时遇到问题。似乎c.vid列是数组,而d.associations.associatedvids是INT64类型。将数组转换为INT64的最佳方式是什么?乍一看,它们看起来一模一样。我是从博士后毕业的,我不能把我的头绕在它身上。有人有什么想法吗

这就是错误:

No matching signature for operator = for argument types: INT64, ARRAY<INT64>. Supported signatures: ANY = ANY at [2:26]
参数类型:INT64,数组的运算符=没有匹配的签名。支持的签名:ANY=anyat[2:26]

找到了解决方案。我必须在associations.associatedvids列上使用unnest()

最后一个问题是:

SELECT associated_vid,d.dealid FROM hs.deals AS d, unnest(associations.associatedvids) as associated_vid
JOIN hs.contacts as c on c.vid = associated_vid

我猜创建您的
交易表的人都知道/假设每笔交易都可能有多个关联/关联视频。在BQ中,使用这样的嵌套数组对于查询性能和存储成本来说是一种很好的做法。是的,我们以前使用过Postgres,它有一个单独的关联表。这可以通过Stich(ETL)实现