【问题标题】:bigQuery - operation with calculated valuesbigQuery - 计算值的操作
【发布时间】:2016-04-26 00:56:12
【问题描述】:

我有一个带有两个按子句分区的查询。 我想知道每个应用在一天内平均被下载了多少次。

SELECT date(timestamp) as date, ID, count(*) as cnt_downloads,
sum(cnt_downloads) over (partition by ID) as total_downl, 
count(*) over (partition by ID) as total_appear,
(sum(cnt_downloads) over (partition by ID)) / (count(*) over (partition by ID)) as avg_dowl

FROM [default.download_activity]
where date(timestamp) >= '2016-01-04' and date(timestamp) <= '2016-01-20' 
group by date,two_hour, ID

所以查询在没有FROM 之前的最后一行的情况下工作。而且我知道我可以通过简单地包含 (avg (cnt_downloads) over (partition by ID)) as avg_dowl 来获得价值。

但是我的问题是如何包含partition over 子句的两个子结果的操作。 我尝试了使用和不使用() 以及[]。总是有这个字段不是原始数据库的一部分的错误。

谢谢

【问题讨论】:

  • 您的费率很低。对 SO 很重要,您必须使用已发布答案左侧、投票下方的勾号来标记已接受的答案。这将提高您的费率。通过访问此链接了解其工作原理:meta.stackoverflow.com/questions/5234/…

标签: google-bigquery partitioning


【解决方案1】:

不要害怕使用子查询。

SELECT date, ID,
             cnt_downloads,
             total_down1,
             total_appear,
             total_down1/total_appear AS avg_dowl
FROM
  (SELECT date(TIMESTAMP) AS date,
          ID,
          count(*) AS cnt_downloads,
          sum(cnt_downloads) over (partition BY ID) AS total_downl,
          count(*) over (partition BY ID) AS total_appear,
   FROM [default.download_activity]
   WHERE date(TIMESTAMP) >= '2016-01-04'
     AND date(TIMESTAMP) <= '2016-01-20'
   GROUP BY 1,
            2
   )

【讨论】:

  • 我不害怕,我只是不想花两倍的钱,因为每次查询都要花费 2 美元,而且它们必须每小时运行一次。
  • 您确定查询费用为 2 美元,这很多吗?如果是这样,您可能必须每天在表中重组您的表。如果您遇到此问题,请发布另一个问题以获取如何降低成本的帮助。
  • 表中的表是什么意思?截至目前,tablerun 会返回大约 300 GB,包括多年前的历史记录。
  • 我刚刚使用 Select - Select 进行了尝试,它与原始查询中的 GB 数几乎相同。这意味着(我以前不知道)第二个选择在财务上指的是小得多的输出表。谢谢!
  • 关于定价:BigQuery 对读取的初始表的列成本收费。嵌套选择不收取额外费用。 SELECT f FROM (SELECT f FROM (SELECT f ... from (SELECT f from mytable)...))) 将收取 mytable 中 f 列的字节成本。由于 N 个嵌套选择,您无需支付 N*f 费用。 cloud.google.com/bigquery/pricing#queries
猜你喜欢
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多