如何在Google Data Studio中拆分单列逗号分隔值至独立列或实现下拉筛选
告警值拆分与级联下拉实现方案
优先实现:级联下拉菜单方案
无需提前拆分字段,通过预处理数据即可实现二级联动下拉,操作步骤如下:
- 先在BigQuery中执行预处理SQL,将逗号分隔的告警值拆分为多行:
SELECT 姓名, 拆分后告警值 FROM 你的业务表名, -- 拆分告警值字段,空值先转空字符串避免报错 UNNEST(SPLIT(IFNULL(告警值, ''), ',')) AS 拆分后告警值 WHERE 拆分后告警值 != '' -- 过滤原字段为空产生的无效行
- 将上述SQL的查询结果设置为Google Data Studio的新增数据源
- 在报表中添加两个下拉控件:
- 第一个下拉:维度选择「姓名」,勾选「必要参数」
- 第二个下拉:维度选择「拆分后告警值」,添加过滤规则为「姓名等于第一个下拉选中值」,即可实现选中对应姓名后,第二个下拉自动展示该用户所有告警值的效果
备选实现:告警值拆分到独立列方案
有两种实现方式,按需选择即可:
方式1:在BigQuery中预处理生成拆分字段
SELECT 姓名, -- SAFE_OFFSET避免索引越界报错,索引从0开始计数 SPLIT(告警值, ',')[SAFE_OFFSET(0)] AS 告警值1, SPLIT(告警值, ',')[SAFE_OFFSET(1)] AS 告警值2, SPLIT(告警值, ',')[SAFE_OFFSET(2)] AS 告警值3, -- 有更多可能的告警值就按上面的格式向后补即可 FROM 你的业务表名
方式2:在Google Data Studio中用正则直接生成计算字段
你找到的(.+?)(?:,|$)正则逻辑是对的:(.+?)非贪婪匹配单个告警值,(?:,|$)匹配值的结束标识(逗号或字符串结尾,?:表示不捕获该段内容)。要提取第n个告警值,只要跳过前面n-1个「值+逗号」的组合即可:
- 告警值1计算字段公式:
REGEXP_EXTRACT(告警值, r'^(.+?)(?:,|$)') - 告警值2计算字段公式:
REGEXP_EXTRACT(告警值, r'^(?:.+?,)(.+?)(?:,|$)') - 告警值3计算字段公式:
REGEXP_EXTRACT(告警值, r'^(?:.+?,){2}(.+?)(?:,|$)') - 以此类推,提取第n个值时把
{2}替换为{n-1}即可
内容的提问来源于stack exchange,提问作者shab1r
相关产品推荐
相关产品推荐

