You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Big Query视图中实现按列值提取非空指定列名生成新列的需求

BigQuery视图实现指定非空列名提取需求

实现方案

针对需求,我们可以通过数组拼接与字符串转换的组合逻辑,在BigQuery中生成目标视图。以下是具体SQL代码:

CREATE OR REPLACE VIEW your_target_view AS
SELECT
  A,
  B,
  C,
  -- 处理空数组场景,返回Null;否则将数组转为逗号分隔字符串
  CASE
    WHEN ARRAY_LENGTH(non_null_col_names) = 0 THEN NULL
    ELSE ARRAY_TO_STRING(non_null_col_names, ', ')
  END AS D
FROM (
  SELECT
    A,
    B,
    C,
    -- 按条件收集非空列名到数组
    ARRAY_CONCAT(
      IF(A IS NOT NULL, ['A'], []),
      IF(C IS NOT NULL, ['C'], [])
    ) AS non_null_col_names
  FROM your_source_table -- 替换为你的实际表名
);

逻辑说明

  1. 内层子查询:使用IF函数判断指定列(A、C)是否非空,非空则将列名加入数组,否则加入空数组;再通过ARRAY_CONCAT合并两个数组,得到当前行的非空列名集合。
  2. 外层查询:通过CASE语句判断数组长度,若数组为空(即A、C均为Null),则D列返回Null;否则用ARRAY_TO_STRING将数组转换为逗号分隔的字符串,作为D列的值。

结果验证

将上述SQL应用到示例输入表后,输出结果完全匹配需求示例:

ABCD
Null2.42.0C
1.0Null1.1A, C
4.53.5NullA
Null3.5NullNull

内容的提问来源于stack exchange,提问作者Test_Analytics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:07:17