【问题标题】:Getting time series data when each day is a table (Google Analytics, Big Query)当每天都是一张表时获取时间序列数据(Google Analytics,Bigquery)
【发布时间】:2022-07-14 13:17:54
【问题描述】:

我在 Big Query 中有一些 Google Analytics 数据,其中数据集是不同的网站,表格是给定日期的会话。

所以以这个查询为例:

SELECT sum(totals.pageviews) as Pub1
  FROM `ga_data.1010101010.ga_sessions_20220711`

在这个例子中:

  1. ga_data 是我的项目
  2. 1010101010 是我的数据集(单个出版物)
  3. ga_sessions_20220711 是 7 月的表格,11 个会话

因此,该查询为我提供了当天的总页面浏览量。我想知道的是两件事:

  1. 如何将此查询扩展到所有表的所有日期以获得每日总计?
  2. 如何将此查询扩展到所有数据集的所有网站上的所有每日总数?

感谢您的帮助。

【问题讨论】:

    标签: sql google-bigquery google-analytics


    【解决方案1】:

    请看下面的答案:

    1.如何将此查询扩展到所有表的所有日期以获得每日总计?

    您可以使用wildcard table 查询多个表:

    SELECT sum(totals.pageviews) as Pub1
      FROM `ga_data.1010101010.ga_sessions_202207*`;
    

    输出:

    2.如何将此查询扩展到所有网站上所有每日总数的所有数据集?

    您可以将INFORMATION_SCHEMA.SCHEMATA 中的数据集设置为数组,然后使用IFEXECUTE IMMEDIATE 循环遍历数组

    DECLARE schemas ARRAY<string>;
    DECLARE query string;
    DECLARE i INT64 DEFAULT 0;
    DECLARE arrSize INT64;
    
    SET schemas = ARRAY(select schema_name from INFORMATION_SCHEMA.SCHEMATA);
    SET arrSize = ARRAY_LENGTH(schemas);
    
    LOOP
    
      IF i < arrSize THEN 
        SET query = CONCAT("SELECT * FROM `<your-project>.",schemas[OFFSET(i)],".*`");
        EXECUTE IMMEDIATE query;
        SET i = i + 1;
      END IF;
    
    END LOOP; 
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多