【发布时间】:2021-05-01 01:43:44
【问题描述】:
我在 BigQuery 中有两个表:
- A - 具有进程的确切开始和结束时间
- B - 它具有流程消耗的几种产品的每小时成本
我需要使用表 B 中的数据来计算每个过程(表 A)的成本估计值。我想通过将包含在该时间段内的所有产品(表 B)的成本相加来实现表A中的过程。
所以,这里有两个表的一些假数据和所需的输出:
流程元数据(表 A)
| process_name | timestamp_init | timestamp_end |
|---|---|---|
| a | 2021-04-01 11:15:44.888153 UTC | 2021-04-01 12:25:44.888153 UTC |
| b | 2021-04-01 13:50:17.033498 UTC | 2021-04-01 14:50:17.033498 UTC |
| c | 2008-04-02 20:19:36.983747 UTC | 2008-04-02 20:58:20.983747 UTC |
| d | 2010-04-02 22:06:10.348753 UTC | 2010-04-02 23:08:28.348753 UTC |
平台成本(表 B)
| product | usage_start_time | usage_end_time | cost |
|---|---|---|---|
| ax | 2021-04-01 11:00:00 UTC | 2021-04-01 12:00:00 UTC | 10 |
| b4 | 2021-04-01 11:00:00 UTC | 2021-04-01 12:00:00 UTC | 9 |
| cf | 2021-04-01 11:00:00 UTC | 2021-04-01 12:00:00 UTC | 25 |
| jw | 2021-04-01 14:00:00 UTC | 2021-04-01 15:00:00 UTC | 125 |
| ki | 2021-04-01 20:00:00 UTC | 2021-04-01 21:00:00 UTC | 180 |
| fr | 2021-04-01 22:00:00 UTC | 2021-04-01 23:00:00 UTC | 250 |
期望的结果
| process_name | total_cost |
|---|---|
| a | 44 |
| b | 125 |
| c | 180 |
| d | 250 |
我开发了以下代码:
SELECT a.process_name,
SUM(b.cost) as total_cost
FROM A a,
B b
WHERE b.usage_start_time >= timestamp_trunc(timestamp_add(a.timestamp_init, interval 30 minute), hour)
AND b.usage_end_time <= timestamp_trunc(timestamp_add(a.timestamp_end, interval 30 minute), hour)
GROUP BY a.process_name
请注意,我正在四舍五入表 A 中的时间戳,因此它与表 B 的格式相匹配。
但由于某种我不知道的原因,它没有返回任何结果。我做错了什么?
【问题讨论】:
标签: sql google-bigquery