SQL 在 BigQuery CASE WHEN 中带有分类变量

SQL in BigQuery CASE WHEN with categorical variables

我需要根据平台来源(PC、Web、移动)重新分配我的收入,因为我为这些平台中的任何一个支付了不同的税,以便在 Google BigQuery 中获得我的净收入。这是我的数据样本:

我已尝试根据平台源的值创建一个 CASE WHEN,但它不起作用。输出只有零。

CASE WHEN ${platform_source} = 'Mobile' THEN ${revenue_raw} * 0.7
              WHEN ${platform_source} = 'Web' THEN ${revenue_raw} * 0.88
              WHEN ${platform_source} = 'Pc' THEN ${d1_iap_revenue_raw} * 0.88
              ELSE NULL END

非常感谢!

字符串匹配区分大小写。

试试这个

CASE WHEN ${platform_source} = 'Mobile' THEN ${revenue_raw} * 0.7
              WHEN ${platform_source} = 'Web' THEN ${revenue_raw} * 0.88
              WHEN ${platform_source} = 'PC' THEN ${d1_iap_revenue_raw} * 0.88
              ELSE NULL END

如果 none 的条件匹配,正如@Mr.Batra 提到的,Platform 列可能包含额外的空格。如果字符串长度不是预期值,则必须处理该列。

要处理该列并删除任何尾随或前导空格,请使用 TRIM 函数。

CASE WHEN TRIM(${platform_source}) = 'Mobile' THEN ${revenue_raw} * 0.7
     WHEN TRIM(${platform_source}) = 'Web' THEN ${revenue_raw} * 0.88
     WHEN TRIM(${platform_source}) = 'PC' THEN ${d1_iap_revenue_raw} * 0.88
ELSE NULL END