我的要求: 将未嵌套的数据附加到单独的表中并将其用于可视化和分析
实现: 因为我不确定 events_intraday_YYYYMMDD 究竟在什么时间同步到 events_YYYYMMDD 以供引用检查 here
0- 使用以下方法在开始时创建了一个 events_normalized
表(仅执行一次,而不是每天)
create analytics_data_export.events_normalized AS
SELECT .....
FROM
`analytics_xxxxxx.events_*
收集 events_YYYYMMDD 的所有数据
1- 创建/替换每日临时表
为
create or replace table analytics_data_export.daily_data_temp AS
SELECT...
_TABLE_SUFFIX BETWEEN
FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 4 DAY)) AND
FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
因为我已经看到多天的数据同步在一起,所以为了安全起见,我使用 1-4 天的数据
2- 从 events_normalized
中删除两个表的内部联接(daily_data_temp,events_normalized
),以删除它可能具有的任何重复项,例如 events_normalized
具有截至 18 日的数据,但 daily_data_temp
具有 16-19 日的数据,因此 events_normalized
中截至 18 日的所有行都将被删除
4- 在 events_normalized
中重新插入 daily_data_temp
问题:
1-是否有任何优化的方法来实现要求
2- 在创建 events_normalized
表时的第 0 步中,如果我使用:
WHERE
_TABLE_SUFFIX <=
FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY))
与使用时相比,我得到了不同的结果
create analytics_data_export.events_normalized AS
SELECT .....
FROM
`analytics_xxxxxx.events_*
区别在于后者也有当前日期数据,其中 events_YYYYMMDD 我只能看到昨天的数据。我不明白这种行为
就像 events_YYYYMMDD 中的当前日期是 7 月 20 日一样,我只能看到 events_20200719 之前的内容
最佳答案
要进行优化,您可以按照以下步骤操作:
- 根据 event_time_stamp 和其他唯一字段创建哈希,用它来过滤数据
- 不要从较大的初始表中删除重复行,而是从较小的临时表中删除它们,然后插入该表。
这是因为过滤器
analytics_xxxxxx.events_*
将匹配每日事件表和日内事件表(名称为 就像events_intraday_20200721
关于firebase - 与不使用通配符和 _TABLE_SUFFIX 相比,BigQuery -firebase 导出的工作方式有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62996535/