如何在Looker中合并顺序不同的国家组合以生成无重复饼图?
批量合并顺序不同的国家组合方法
方法一:在LookML建模层处理(推荐,持久生效)
通过在模型层定义标准化的国家组合维度,自动将顺序不同的组合统一为唯一格式,后续所有探索都能直接复用该维度,无需重复操作。
- 拆分国家组合为独立字段
用split_part函数将country_combination按分隔符(示例为-)拆分为两个单独的国家字段:
dimension: country_1 { type: string sql: split_part(${country_combination}, ' - ', 1) ;; } dimension: country_2 { type: string sql: split_part(${country_combination}, ' - ', 2) ;; }
- 生成统一格式的组合名
用least和greatest函数对两个国家字段排序,确保无论原始顺序如何,拼接后的组合名完全一致(比如Canada - India和India - Canada都会转为Canada - India):
dimension: standardized_country_combination { type: string sql: concat(least(${country_1}, ${country_2}), ' - ', greatest(${country_1}, ${country_2})) ;; }
- 基于标准化维度聚合计数
在对应探索中,以standardized_country_combination作为分组维度,搭配total_count的求和指标(若total_count是预聚合值可直接使用,原始数据则用count(*)),即可得到合并后的总计数,直接生成无重复的饼图。
方法二:在Looker探索界面用自定义字段临时处理
若不想修改LookML,可在探索界面直接创建自定义字段实现批量合并:
- 进入目标探索,点击「添加」→「自定义字段」
- 输入以下SQL公式(注意替换分隔符和字段名匹配你的数据):
CONCAT(LEAST(SPLIT_PART(${country_combination}, ' - ', 1), SPLIT_PART(${country_combination}, ' - ', 2)), ' - ', GREATEST(SPLIT_PART(${country_combination}, ' - ', 1), SPLIT_PART(${country_combination}, ' - ', 2)))
- 将字段命名为「标准化国家组合」,保存后用它替换原
country_combination作为饼图的分组维度,搭配total_count求和即可得到无重复的分布结果。
注意事项
- 确保公式中的分隔符与数据实际格式完全匹配,比如若分隔符是无空格的
-,则将公式里的' - '改为'-' - 若国家组合包含两个以上国家,可调整逻辑为拆分所有国家后排序再拼接,核心思路仍是通过排序实现标准化
内容的提问来源于stack exchange,提问作者Devanshi Gandhi
相关产品推荐
相关产品推荐

