Bigquery CASE 函数未按预期工作
Bigquery CASE function not working as expected
我有一个 brand_name 的列表,需要使用 CASE + REGEX 将它们匹配到不同的 brand_type。
然而,bigquery 似乎没有像预期的那样正确分类 brand_name,即所有应该属于“其他”案例的东西都被分类为“家具”
这里只是一个简化的查询,用于显示正在使用的逻辑:
SELECT CASE WHEN REGEXP_CONTAINS(brand_name, r"pen|scissors")= TRUE THEN 'Stationery'
WHEN REGEXP_CONTAINS(brand_name, r"chair|table")= TRUE THEN 'Furniture'
WHEN REGEXP_CONTAINS(brand_name, r"cup|pot")= TRUE THEN 'Household'
ELSE 'Stationery'
END AS brand_type FROM table
例如,期望纸张被归类为“文具”,但它却被归类为“家具”:
id
brand_name
brand_type
1
pen
Stationery
2
chair
Furniture
3
cup
Household
4
paper
Furniture
改用下面的方法
SELECT CASE
WHEN REGEXP_CONTAINS(brand_name, r"pen|scissors") THEN 'Stationery'
WHEN REGEXP_CONTAINS(brand_name, r"chair|table") THEN 'Furniture'
WHEN REGEXP_CONTAINS(brand_name, r"cup|pot") THEN 'Household'
ELSE 'Stationery'
END AS brand_type
FROM table
如您所见,您有额外的 CASE
这打破了逻辑。
你也不需要使用 =TRUE
我有一个 brand_name 的列表,需要使用 CASE + REGEX 将它们匹配到不同的 brand_type。
然而,bigquery 似乎没有像预期的那样正确分类 brand_name,即所有应该属于“其他”案例的东西都被分类为“家具”
这里只是一个简化的查询,用于显示正在使用的逻辑:
SELECT CASE WHEN REGEXP_CONTAINS(brand_name, r"pen|scissors")= TRUE THEN 'Stationery'
WHEN REGEXP_CONTAINS(brand_name, r"chair|table")= TRUE THEN 'Furniture'
WHEN REGEXP_CONTAINS(brand_name, r"cup|pot")= TRUE THEN 'Household'
ELSE 'Stationery'
END AS brand_type FROM table
例如,期望纸张被归类为“文具”,但它却被归类为“家具”:
id | brand_name | brand_type |
---|---|---|
1 | pen | Stationery |
2 | chair | Furniture |
3 | cup | Household |
4 | paper | Furniture |
改用下面的方法
SELECT CASE
WHEN REGEXP_CONTAINS(brand_name, r"pen|scissors") THEN 'Stationery'
WHEN REGEXP_CONTAINS(brand_name, r"chair|table") THEN 'Furniture'
WHEN REGEXP_CONTAINS(brand_name, r"cup|pot") THEN 'Household'
ELSE 'Stationery'
END AS brand_type
FROM table
如您所见,您有额外的 CASE
这打破了逻辑。
你也不需要使用 =TRUE