使用 BigQuery 对日期数组进行子查询

亚当霍普金森

我有一个存储销售目标的表格 - 这些通常按月设置,但按天输入 - 这意味着每日目标是月目标除以天数。

这是输入目标的劳动密集型方式,因此我想重新创建具有开始和结束日期的表:

WITH targets AS (
  SELECT DATE '2018-01-01' AS dateStart, DATE '2018-01-31' AS dateEnd, 'uk' AS market, NUMERIC '1550' AS quantity
  UNION ALL SELECT '2018-02-01', '2018-02-28', "uk", 560
)

在我的查询中,我需要生成一个日期数组 ( dateStartto dateEnd),然后对于数组中的每个日期,应用市场并将目标除以数组中的日期数 - 但我无法让它工作。我正在做类似的事情:

SELECT 
  *,
  (SELECT market FROM targets WHERE dr IN GENERATE_DATE_ARRAY(targets.dateStart, targets.dateEnd, INTERVAL 1 DAY)) AS market,
  (SELECT SAFE_DIVIDE(budget, COUNT(GENERATE_DATE_ARRAY(targets.dateStart, targets.dateEnd, INTERVAL 1 DAY)) FROM targets WHERE dr IN GENERATE_DATE_ARRAY(targets.dateStart, targets.dateEnd, INTERVAL 1 DAY)) AND targets.market = market AS budget
FROM UNNEST(GENERATE_DATE_ARRAY(targets.dateStart, targets.dateEnd, INTERVAL 1 DAY)) AS dr

这意味着源表中的数据条目和行数更少(这是一个 Google 表格,因此最终会达到限制)。谢谢你的帮助。

米哈伊尔·贝里安特

下面是 BigQuery 标准 SQL

#standardSQL
WITH targets AS (
  SELECT DATE '2018-01-01' AS dateStart, DATE '2018-01-31' AS dateEnd, 'uk' AS market, NUMERIC '1550' AS quantity
  UNION ALL SELECT '2018-02-01', '2018-02-28', "uk", 560
)
SELECT market, day, quantity / days AS target
FROM targets, 
  UNNEST(GENERATE_DATE_ARRAY(dateStart, dateEnd)) day, 
  UNNEST([DATE_DIFF(dateEnd, dateStart, DAY) + 1]) days
ORDER BY market, day   

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用asort()对日期数组进行排序

来自分类Dev

使用BigQuery选择今天的日期

来自分类Dev

BigQuery:使用标准 sql 查询

来自分类Dev

使用asort()对日期进行排序的数组无法正常工作

来自分类Dev

对日期数组进行排序

来自分类Dev

使用bigquery和单个查询进行分区,根据日期将表拆分为多个表

来自分类Dev

使用WHERE子句中的子查询的Google BigQuery优化

来自分类Dev

使用空数组连接 bigquery 中的数组

来自分类Dev

使用内部联接进行 BigQuery 更新

来自分类Dev

根据当前日期对日期数组进行排序

来自分类Dev

如何使用数组更新bigquery表?

来自分类Dev

如何通过PHP对日期数组进行排序?

来自分类Dev

使用相对日期创建 MYSQL 查询

来自分类Dev

使用PHP对日期进行分组

来自分类Dev

无法使用结构对日期进行排序

来自分类Dev

如何使用 XSLT 对日期进行分区

来自分类Dev

如何使用数组中的 moment.js 按降序对日期进行排序

来自分类Dev

BigQuery脚本,用于使用联合查询将Google Cloud Postgres表复制到BigQuery

来自分类Dev

Google BigQuery:如何按月末日期生成日期数组

来自分类Dev

如何使用 JavaScript 对带有数据的日期数组进行排序?

来自分类Dev

BigQuery-如何比较“日期”列(使用旧版SQL)?

来自分类Dev

如何在 BigQuery 中使用带有日期的 SQL

来自分类Dev

BigQuery-使用2个不同的分区运行查询

来自分类Dev

BigQuery命令行工具-使用查询追加到表

来自分类Dev

使用BigQuery联合源查询压缩文件

来自分类Dev

Bigquery API:使用destinationTable运行查询不会保存结果

来自分类Dev

如何在Bigquery查询文本中使用转义引号?

来自分类Dev

使用BigQuery查询地理空间数据

来自分类Dev

使用Google Cloud Dataflow执行Google Bigquery查询

Related 相关文章

  1. 1

    使用asort()对日期数组进行排序

  2. 2

    使用BigQuery选择今天的日期

  3. 3

    BigQuery:使用标准 sql 查询

  4. 4

    使用asort()对日期进行排序的数组无法正常工作

  5. 5

    对日期数组进行排序

  6. 6

    使用bigquery和单个查询进行分区,根据日期将表拆分为多个表

  7. 7

    使用WHERE子句中的子查询的Google BigQuery优化

  8. 8

    使用空数组连接 bigquery 中的数组

  9. 9

    使用内部联接进行 BigQuery 更新

  10. 10

    根据当前日期对日期数组进行排序

  11. 11

    如何使用数组更新bigquery表?

  12. 12

    如何通过PHP对日期数组进行排序?

  13. 13

    使用相对日期创建 MYSQL 查询

  14. 14

    使用PHP对日期进行分组

  15. 15

    无法使用结构对日期进行排序

  16. 16

    如何使用 XSLT 对日期进行分区

  17. 17

    如何使用数组中的 moment.js 按降序对日期进行排序

  18. 18

    BigQuery脚本,用于使用联合查询将Google Cloud Postgres表复制到BigQuery

  19. 19

    Google BigQuery:如何按月末日期生成日期数组

  20. 20

    如何使用 JavaScript 对带有数据的日期数组进行排序?

  21. 21

    BigQuery-如何比较“日期”列(使用旧版SQL)?

  22. 22

    如何在 BigQuery 中使用带有日期的 SQL

  23. 23

    BigQuery-使用2个不同的分区运行查询

  24. 24

    BigQuery命令行工具-使用查询追加到表

  25. 25

    使用BigQuery联合源查询压缩文件

  26. 26

    Bigquery API:使用destinationTable运行查询不会保存结果

  27. 27

    如何在Bigquery查询文本中使用转义引号?

  28. 28

    使用BigQuery查询地理空间数据

  29. 29

    使用Google Cloud Dataflow执行Google Bigquery查询

热门标签

归档