【问题标题】:How to query automatical date in Bigquery¿?如何在 Bigquery¿ 中查询自动日期?
【发布时间】:2017-06-29 10:22:06
【问题描述】:

我在 Bigquery 有不同的查询,但每个月只需要运行一次(包含上个月的所有关闭数据)。 目前我在查询中手动更改日期,但我需要更改它并创建一个函数,为我提供过去的数据。

例如:我在 7 月 1 日或 2 日运行此查询,并且需要查询从 6 月 1 日到 30 日获取数据。 (查询是用标准 SQL 方言编写的)

谢谢。

代码:

SELECT
  hits.contentGroup.contentgroup2 AS CampaignGrouping,
  custd.value AS member_PK,
  PARSE_TIMESTAMP('%Y%m%d',date) AS date,
  'WebMobile' AS Canal,
  'MX' AS country_id,
  SUM(hits.contentGroup.contentGroupUniqueViews2) AS VistasUnicas
FROM
  `bigquery-xxxx-xxxxx.111111.ga_sessions*`,
  UNNEST(customdimensions) custd,
  UNNEST(hits) AS hits
WHERE
  1 = 1
  AND PARSE_TIMESTAMP('%Y%m%d', REGEXP_EXTRACT(_table_suffix, r'.*_(.*)')) BETWEEN TIMESTAMP('2017-06-01') AND TIMESTAMP('2017-06-30')
  AND custd.index=30
  and hits.contentGroup.contentGroup2 <> '(not set)'
  AND custd.value <> 'null'
  AND hits.contentGroup.contentGroupUniqueViews2 IS NOT NULL
 GROUP BY 1, 2, 3, 4, 5

【问题讨论】:

    标签: mysql sql google-bigquery


    【解决方案1】:

    下面是 BigQuery 标准 SQL,假设有一个日期字段 dt 包含日期信息

    #standardSQL
    SELECT *
    FROM yourTable
    WHERE DATE_TRUNC(dt, MONTH) = 
      DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH) 
    

    以上假设 dt 字段的数据类型为 DATE

    如果 dt 是 STRING 类型 - 请在下面尝试

    #standardSQL
    WITH yourTableAS (
      SELECT '2017-05-30' AS dt UNION ALL
      SELECT '2017-05-31' UNION ALL  
      SELECT '2017-06-01' UNION ALL  
      SELECT '2017-06-02' UNION ALL  
      SELECT '2017-06-03'  
    )
    SELECT *
    FROM yourTable
    WHERE DATE_TRUNC(CAST(dt AS DATE), MONTH) = 
      DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH)   
    

    如果 dt 的格式与 'YYYY-MM-DD' 不同,您可以使用 PARSE_DATE 将字符串转换为日期

    【讨论】:

    • 谢谢@Mikhail,但我对匹配的格式有疑问。错误:对于参数类型的函数 DATE_TRUNC 没有匹配的签名:STRING、DATE_TIME_PART。支持的签名:DATE_TRUNC(DATE, DATE_TIME_PART) 在 [13:7]
    • 显示您的数据示例 - 特别是 dt 字段,它是什么数据类型?看起来你这里有字符串,只需要将它转换为 DATE
    • 嗨@Mikhail,我有来自 GA 的不同数据集,我正在查询来自不同数据集的数据。唯一带日期的字段是“日期”并且是字符串类型。我在主要问题处复制代码。
    猜你喜欢
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多