Google bigquery 处理大查询中case语句中的空值
我想把一个小数分成命名组的值分组 例如:Google bigquery 处理大查询中case语句中的空值,google-bigquery,Google Bigquery,我想把一个小数分成命名组的值分组 例如: CASTX为NUMERIC时的情况不确定是否有一个基于语法的答案会有所帮助,但实现更干净或无重复代码的一个潜在方法是使用CTE将查询分解为逻辑块 with data as (), -- raw data casted as (), -- do your safe_cast here transformed as () - do your case statement here select * from transformed 它
CASTX为NUMERIC时的情况不确定是否有一个基于语法的答案会有所帮助,但实现更干净或无重复代码的一个潜在方法是使用CTE将查询分解为逻辑块
with data as (), -- raw data
casted as (), -- do your safe_cast here
transformed as () - do your case statement here
select * from transformed
它确实可以使代码更长,但也允许在转换阶段使用更干净的逻辑来实现您的既定目标。这应该可以帮助您避免多次编写SAFE\u CAST:
WITH your_data AS (
SELECT "Bob" as name, "150.19" as weight UNION ALL
SELECT "Tom", "2000.90" UNION ALL
SELECT "Jerry", Null)
, transform as (
SELECT name, CAST(weight as NUMERIC) as weight
FROM your_data
)
SELECT
name,
CASE
WHEN weight IS NULL
THEN "MissingData"
WHEN weight<1000
THEN "Under1000"
ELSE "Over1000"
END as weight_agg
FROM transform
结果:
不能使用CASE的第二个缩短版本,因为它只适用于相等性检查,并且需要IS NULL比较。您当前的代码可能已经非常紧凑了。哦:好的:谢谢您: