2

我的要求: 将未嵌套的数据附加到单独的表中并将其用于可视化和分析

实施它:因为我不确定 events_intraday_YYYYMMDD 在什么时间准确同步到 events_YYYYMMDD 以供参考检查here

0-在开始时使用创建一个events_normalized表(不是每天一次)

  create analytics_data_export.events_normalized AS
SELECT .....
FROM
    `analytics_xxxxxx.events_*

从 events_YYYYMMDD 收集所有数据

temp table1-创建/替换每天

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-删除两个表(daily_data_temp,events_normalized)的内部连接events_normalized以删除它可能具有的任何重复项,比如假设events_normalized数据到 18 日,但daily_data_temp 数据从 16 日到 19 日,因此所有行到 18 日events_normalized都将被删除

4-重新daily_data_temp插入events_normalized

问题

1-是否有任何优化的方法来实现要求

events_normalized2-如果我使用,在创建表的第 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

4

1 回答 1

2
  1. 要优化,您可以按照以下步骤操作:

    1. 从 event_time_stamp 和其他唯一字段创建散列,使用它来过滤数据
    2. 而不是从较大的初始表中删除重复的行,而是从小型临时表中删除它们,然后插入该表。
  2. 这是因为过滤器analytics_xxxxxx.events_*将匹配每日事件表和日内事件表,它们的名称类似于events_intraday_20200721

于 2020-07-21T11:12:32.837 回答