sql - 尝试使用 BigQuery 选择事件数据时出错

标签 sql firebase google-bigquery firebase-analytics

我尝试在 BigQuery 中选择 event_dim.date,但由于错误而无法实际访问它

Error: Cannot access field date on a value with type ARRAY<STRUCT<date STRING, name STRING, params ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT, ...>>>, ...>> at [1:18]

我的查询:

SELECT event_dim.date FROM `table`

我知道我做错了,任何帮助将不胜感激。谢谢!

最佳答案

您是否想获取每行的日期数组?然后你需要一个 ARRAY 子查询:

SELECT ARRAY(SELECT date FROM UNNEST(event_dim)) AS dates
FROM `table`;

如果您尝试获取单独行中的所有日期,那么您需要与数组交叉连接:

SELECT event.date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event;

要过滤特定日期:

SELECT event.date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event
WHERE event.date = '20170104';

或者您可以将日期字符串解析为 date 类型,这样您就可以按年或周进行过滤,例如:

SELECT date
FROM (
  SELECT PARSE_DATE('%Y%m%d', event.date) AS date
  FROM `table`
  CROSS JOIN UNNEST(event_dim) AS event
)
WHERE EXTRACT(YEAR FROM date) = 2017;

关于sql - 尝试使用 BigQuery 选择事件数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509117/

相关文章:

SQL - 对行进行分类

mysql - 表中具有相同值的其他行的计数

android - Firebase 大查询 - 如何从自定义事件表中检索数据

google-bigquery - 如何使用 DBT 在 BigQuery 中对表进行分区

datetime - BigQuery - 从时区名称获取时区偏移量

php - 将 datetime 转换为 varchar 从 MSSQL 到 MYSQL

java - 我如何使用 slick 3.0 一次返回一行?

firebase - 在没有 AppDelegate 和 SceneDelegate 的新 SwiftUI 应用程序生命周期中,我的 iOS 应用程序在哪里配置 Firebase?

swift - 将快照解析为模型 - FirebaseUI

firebase 与 flutter 的集成在地理位置依赖性方面不成功