在BigQuery中使用大型case-when-else语句时,结果不会相加。
有时我们会得到10个桶但不是全部。通常我们按顺序得到几个桶,比如1-8然后我们会期望它返回桶9但它不会,它会返回15或者其他东西。
请注意,这只是一个示例,我们的实际查询有超过100个WHEN语句。在这种情况下,我们可能会得到25个桶,然后重新启动'在列表的某个地方。
“查询参考”未声明WHEN语句的最大数量。那么可能导致这种行为的原因是什么?
SELECT Count(Items) AS item_count,
CASE
WHEN (a >= 0 AND a < 50) THEN 1
WHEN (a >= 50 AND a < 100) THEN 2
WHEN (a >= 100 AND a < 150) THEN 3
WHEN (a >= 150 AND a < 200) THEN 4
WHEN (a >= 200 AND a < 250) THEN 5
WHEN (a >= 250 AND a < 300) THEN 6
WHEN (a >= 300 AND a < 350) THEN 7
WHEN (a >= 350 AND a < 400) THEN 8
WHEN (a >= 400 AND a < 500) THEN 9
WHEN (b >= 100 AND b < 200) THEN 10
WHEN (b >= 200 AND b < 300) THEN 11
WHEN (b >= 300 AND b < 400) THEN 12
WHEN (b >= 400 AND b < 500) THEN 13
WHEN (b >= 500 AND b < 1000) THEN 14
WHEN (b >= 1000 AND b < 2000) THEN 15
ELSE -1
END AS bucket
FROM [dataset1.sometable]
GROUP BY bucket
答案 0 :(得分:3)
事实证明,在我们的情况下不止一个时候可能是真的,这会弄乱结果。 CASE-WHEN-ELSE语句无法处理。