我正在尝试使用BigQuery中的标准SQL查询使用行存储时间序列数据的数据。下面的示例数据。职位比A-D还要多
+-----+------------+--------------+-----------+
| Job | BatchDate | SuccessCount | FailCount |
+-----+------------+--------------+-----------+
| A | 2018-01-01 | 35 | 1 |
| A | 2018-01-07 | 13 | 6 |
| B | 2018-01-01 | 12 | 23 |
| B | 2018-01-07 | 67 | 12 |
| C | 2018-01-01 | 9 | 4 |
| C | 2018-01-07 | 78 | 6 |
| D | 2018-01-01 | 3 | 78 |
| D | 2018-01-07 | 99 | 5 |
+-----+------------+--------------+-----------+
我希望将以下内容作为输出,但是无法确定如何在BigQuery中完成此操作。
列中的成功计数值
+-----+------------+--------------+
| Job | 2018-01-01 | 2018-01-07 |
+-----+------------+--------------+
| A | 35 | 13 |
| B | 12 | 67 |
| C | 9 | 78 |
| D | 3 | 99 |
+-----+------------+--------------+
BigQuery可以实现这种功能吗?谁能提供一个可行的例子?
谢谢
修改
数据将随着时间的推移而增长,每周每项工作都有新条目。有没有一种方法可以不必将每个BatchDate硬编码为一列?
答案 0 :(得分:1)
@Mikhail Berlyant为此提供了出色的解决方案,请参见下面的链接。
答案 1 :(得分:0)
如果GET /_search
{
"_source": [
"fullName"
],
"stored_fields": [
"fullName.terms"
],
"query": {
"bool": {
"must": {
"script": {
"script": {
"source": "doc['fullName.terms'].value != 3",
"lang": "painless"
}
}
}
}
}
}
在所有行上均可用,那么条件聚合将满足您的要求:
Job
答案 2 :(得分:0)
用例
select Job,
sum(case when batchdate='2018-01-01' then SuccessCount else 0 end) as s_01
sum(case when batchdate = '2018-01-07' then SuccessCount else 0 end) as s_07
from t group by job