在 BIGQUERY 上使用 UNNEST 左连接

Posted

技术标签:

【中文标题】在 BIGQUERY 上使用 UNNEST 左连接【英文标题】:LEFT JOIN WITH UNNEST ON BIGQUERY 【发布时间】:2020-05-22 09:18:46 【问题描述】:

我有一个 bigquery 表,我想将它与公共数据集 bigquery-public-data.crypto_bitcoin.transactions 进行外部联接。由于事务表有两个嵌套字段输入和输出。 join 的结果也有嵌套值。我想删除那些。

SELECT *
FROM `asymmetric-glow-274808.mydataset.txid` as mytable
LEFT JOIN `bigquery-public-data.crypto_bitcoin.transactions` as datasource
ON mytable.string_field_3 = datasource.hash
LIMIT 1

例子

mytable
txid
1

transactions
hash    inputs.index  inputs.type outputs.index outputs.type
1       0              aaa            0          aaa
        1              bbb            1          bbb

After join im getting
txid hash    inputs.index  inputs.type outputs.index outputs.type
1      1           0              aaa            0          aaa
                   1              bbb            1          bbb

what i want
txid hash    inputs.index  inputs.type outputs.index outputs.type
1      1           0              aaa            0          aaa
1      1           1              bbb            1          bbb

怎么做?

【问题讨论】:

【参考方案1】:

看来你需要类似的东西

SELECT
  *
FROM
  mytable
LEFT JOIN (
  SELECT
    datasource.hash, inputs, outputs
  FROM
    `bigquery-public-data.crypto_bitcoin.transactions` AS datasource,
    datasource.inputs inputs,
    datasource.outputs outputs) d
ON
  mytable.string_field_3 = d.hash
LIMIT
  100

【讨论】:

如果答案有用,请考虑对其进行投票。您可以点击 ▲ 对其进行投票

以上是关于在 BIGQUERY 上使用 UNNEST 左连接的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:使用 UNNEST 检查数组的内容

一次选择中的 Bigquery 多个 unnest

BigQuery 中的 Unnest 导致“数组”错误

Bigquery:UNNEST 重复与展平表性能

BigQuery:在使用 UNNEST 函数和清理结果数据的方法后,我选择了更多列

无法识别的名称:在 BigQuery 中使用 UNNEST WHERE 时