UNNEST event_params 后表名缺失数据集

Posted

技术标签:

【中文标题】UNNEST event_params 后表名缺失数据集【英文标题】:Table name missing dataset after UNNEST event_params 【发布时间】:2021-08-25 12:01:06 【问题描述】:

我正在尝试执行以下查询:

SELECT 
 (SELECT ep.value FROM ep
                       WHERE ep.key = 'key_name') AS key_name
    FROM analytics_tables.events_20210824 e CROSS JOIN
        UNNEST(event_params) AS ep
    WHERE e.event_name = 'item_clicked' AND
        ep.key = 'my_key_type' and ep.value.int_value=7;

但我收到此错误消息:

表名“ep”缺少数据集,而请求中未设置默认数据集

我应该如何引用“ep”才能使其工作?

【问题讨论】:

【参考方案1】:

试试下面

SELECT 
 (SELECT value FROM e.event_params
                       WHERE key = 'key_name') AS key_name
    FROM analytics_tables.events_20210824 e CROSS JOIN
        UNNEST(event_params) AS ep
    WHERE e.event_name = 'item_clicked' AND
        ep.key = 'my_key_type' and ep.value.int_value=7;

【讨论】:

太棒了!这是一个盲目的镜头,因为我不知道确切的模式。很高兴它对你有用!如果有帮助,也请给答案投票【参考方案2】:

你应该在处理表之前先设置你的数据库,否则它不知道从哪个数据库中提取数据。

USE database;

此解决方案摘自以下quickstart。

【讨论】:

请注意 analytics_tables.events_20210824 工作正常。 "ep" 不是表格,而只是 unnest 的结果,UNNEST(event_params) AS ep。

以上是关于UNNEST event_params 后表名缺失数据集的主要内容,如果未能解决你的问题,请参考以下文章

SQL 'FROM UNNEST' 的语义是啥?

Bigquery 未嵌套数组

大查询中的不嵌套

具有 unnest 的 PostgreSQL 查询不返回空值的结果行

hive insert into 插入数据后表中原来的数据丢失了

10.17 如何修改数据库中的表名增删列修改列类型