【问题标题】:use of week of year & subsquend in bigquery在 bigquery 中使用一年中的一周和随后的一周
【发布时间】:2012-10-17 19:19:53
【问题描述】:

我需要每周显示不同的用户。我有一个日期访问列和一个用户 ID,它是一个有 10 亿行的大表。 我可以将日期列从 CSV 更改为年、月、日列。但是我如何从查询中推断出一周。 我可以从 CSV 计算星期,但这是一个很大的过程步骤。

我还需要显示每天有多少不同的用户访问,寻找解决方法,因为没有日期类型。

有什么想法吗?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    要获取一年中的星期数:

    SELECT STRFTIME_UTC_USEC(TIMESTAMP('2015-5-19'), '%W')
    20
    

    【讨论】:

      【解决方案2】:

      如果您将日期作为时间戳(即自纪元以来的微秒),您可以使用 UTC_USEC_TO_DAY/UTC_USEC_TO_WEEK 函数。或者,如果您有一个 iso 格式的日期字符串(例如“2012/03/13 19:00:06 -0700”),您可以调用 PARSE_UTC_USEC 将字符串转换为时间戳,然后使用它来获取星期或日期。

      要查看示例,请尝试:

      SELECT LEFT((format_utc_usec(day)),10) as day, cnt 
      FROM (
          SELECT day, count(*) as cnt 
          FROM (
              SELECT UTC_USEC_TO_DAY(PARSE_UTC_USEC(created_at)) as day 
              FROM [publicdata:samples.github_timeline])
          GROUP BY day 
          ORDER BY cnt DESC)
      

      要显示星期,只需将UTC_USEC_TO_DAY(...) 更改为UTC_USEC_TO_WEEK(..., 0)(末尾的0 表示星期从星期日开始)。有关更多信息,请参阅https://developers.google.com/bigquery/docs/query-reference 上的上述函数的文档。

      【讨论】:

      • 非常感谢,唯一的问题是,与向源添加“周”列(通过更改大 CSV)和加载到 bigquery 相比,这些查询在大型数据集上的性能太慢了.
      • 获取一年中的星期数:SELECT STRFTIME_UTC_USEC(NOW(), "%W"); (见单独答案)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多