BigQuery 计划查询 - 没有更新行?

BigQuery Scheduled Query - No Rows Updating?

提问人:foxhoundllc 提问时间:11/11/2023 更新时间:11/11/2023 访问量:29

问:

我通过调用存储函数计划每小时进行一次查询。我基本上会获取一小时的关键 Google Analytics 指标,并将它们插入到一个单独的表格中,该表格汇总了这些数据,并且可以提取报告。

函数如下:

"BEGIN
  -- Define variables to construct the dynamic table name
  DECLARE tblName STRING;
  SET tblName = CONCAT('`myga-project.mytable.events_intraday_', FORMAT_DATE('%Y%m%d', CURRENT_DATE('America/New_York')), '`');

  -- Dynamic query execution
  EXECUTE IMMEDIATE FORMAT("""
    INSERT INTO newdataset.newtable
    (event_date, event_hour, medium, total_sessions, total_conversions, total_purchase_revenue)
    SELECT
      event_date,
      event_hour,
      medium,
      SUM(sessions) AS total_sessions,
      SUM(conversions) AS total_conversions,
      SUM(purchase_revenue) AS total_purchase_revenue
    FROM (
      SELECT
        DATE(TIMESTAMP_MICROS(event_timestamp)) AS event_date,
        EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp) AT TIME ZONE 'America/New_York') AS event_hour,
        traffic_source.medium AS medium,
        COUNT(user_id) AS sessions,
        SUM(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) AS conversions,
        SUM(CASE WHEN event_name = 'purchase' THEN ecommerce.purchase_revenue_in_usd ELSE 0 END) AS purchase_revenue
      FROM %s
      WHERE DATE(TIMESTAMP_MICROS(event_timestamp)) = CURRENT_DATE('America/New_York')
        AND EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp) AT TIME ZONE 'America/New_York') = EXTRACT(HOUR FROM CURRENT_TIMESTAMP())
      GROUP BY event_date, event_hour, medium
    )
    GROUP BY event_date, event_hour, medium
    ORDER BY event_date, event_hour, medium;
  """, tblName);
END"

返回:已执行。 结果:添加了 0 行。

查询有效,但无法插入格式化的行。我尝试了一些变体,但仍然遇到问题。

我做了一个函数,因为它不允许我调度脚本。存储函数是执行此操作的最佳方法。此存储函数仍未插入应为事件日期、媒介等的行。

SQL Google-BigQuery 分析

评论

0赞 Adrian Maxwell 11/11/2023
这看起来像一个“存储过程”而不是一个函数(函数通常会返回一些东西,它们通常不会在表中插入行)。这些生成的表名是否真的存在?或者您是否正在尝试将新数据放入生成的表名中?
0赞 Bihag Kashikar 11/11/2023
如果添加了行,则调试的另一种方法是查询information_schema。例如:此查询提供该表的 DML 统计信息 silicon-comfort-329203region-australia southeast1SELECT dml_statistics, start_time, end_time FROM ..INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE statement_type = 'INSERT' order by start_time desc
0赞 foxhoundllc 11/13/2023
@AdrianMaxwell这些生成的表确实存在。每天都会创建一个新表格,其中包含当天的 Google Analytics(分析)数据。然后,该表将在一天结束时自动清除。目标是提取一些数据点,并将其插入到永远不会清除的新表和数据集中。新表也已经创建,并且具有基于这些数据点创建的架构,因此,不要尝试将该数据插入到生成的表中。我正在尝试从生成的表名称中提取数据,然后将其插入到另一个表中。非常感谢!
0赞 foxhoundllc 11/15/2023
@Adrian-Maxwell,这些生成的表确实存在。每天都会创建一个新表格,其中包含当天的 Google Analytics(分析)数据。然后,该表将在一天结束时自动清除。目标是提取一些数据点,并将其插入到永远不会清除的新表和数据集中。新表也已经创建,并且具有基于这些数据点创建的架构,因此,不要尝试将该数据插入到生成的表中。我正在尝试从生成的表名称中提取数据,然后将其插入到另一个表中。非常感谢!
0赞 Adrian Maxwell 11/15/2023
尝试将函数的 select 部分作为查询运行,它是否返回行?也许 where 子句需要检查 - 它会不会太精确了?限制太多?

答: 暂无答案