BQ中WHERE子句CASE表达式作用机制及数值含义咨询
关于BigQuery中CASE表达式的疑问解答
1. CASE里的0和1代表什么?
这里的0和1是过滤标记值:
- 0表示「当前行不符合保留条件,需要被排除」
- 1表示「当前行符合保留条件,需要被留下」
你平时用CASE是生成文本类字段值,而这里是把CASE当作返回0/1的判断逻辑,配合WHERE子句做数据筛选。
2. 'End = 1'是如何生效的?
整个CASE表达式会逐行计算出结果(要么0要么1),End = 1就是只保留那些CASE计算结果等于1的行。本质是让WHERE子句仅留下CASE判断为「符合保留条件」的数据行。
3. 当date_diff为138天时,表达式结果是1吗?
是的,两种情况都会返回1:
- 若当前行
FYW = '202251':date_diff=138 < 150,不满足WHEN的条件,CASE走ELSE返回1 - 若当前行
FYW不是'202251':不管date_diff是多少,CASE直接走ELSE返回1
此时CASE结果为1,这条数据会被保留。
4. 当date_diff为160天时,表达式结果是0还是会被忽略?
分情况判断:
- 仅当
FYW = '202251'且date_diff=160 >=150时,CASE返回0,此时End = 1不成立,这条数据会被WHERE子句过滤掉(即被忽略) - 若
FYW不是'202251',哪怕date_diff=160,CASE仍返回1,数据会被保留
内容的提问来源于stack exchange,提问作者TanoooooNg
相关产品推荐
相关产品推荐

