Tableau中同判断条件返回两个不同空间计算值的实现方法
问题原因
Tableau的IF/ELSEIF判断遵循顺序匹配、命中即退出规则:当前置分支的判断条件被满足时,会直接返回对应结果,不再执行后续分支的判断。你代码里两个针对[District Parameter] = "BARGARH" and [Name of the Recipient District1] = "Khordha"的分支条件完全重复,第二个分支永远没有执行机会,属于逻辑写法冲突。
另外要明确:Tableau中单个空间计算字段对单条数据行只能返回一个空间几何对象,不可能在同条件下同一条记录同时返回两个独立空间值分开渲染。
解决方案
根据你的展示需求,选对应方案即可:
方案1:同条件下同时展示两段路线(合并为一个空间对象)
用Tableau原生空间函数ST_Union()把两段路线的空间对象合并为一个几何值返回,替换掉重复的两个ELSEIF分支即可。修正后的计算字段代码如下:
IF [District Parameter] = "All" THEN [routes] ELSEIF [District Parameter] = "BARGARH" and [Name of the Recipient District1] = "Khordha" THEN // 合并起点到仓库、仓库到收件地两段路线 ST_Union([c.origin to depo route], [c.depo to receipent route]) ELSEIF [District] = [District Parameter] THEN [routes] END
注意:
ST_Union函数支持Tableau Desktop 2019.2及以上版本,低版本请先升级。
方案2:两段路线需要独立设置样式(不同颜色/粗细/线型)
单计算字段无法实现多样式区分,需要新建两个独立的空间计算字段,作为双图层放到地图标记卡中分别配置:
- 第一个图层(起点-仓库段)计算逻辑:
IF [District Parameter] = "BARGARH" and [Name of the Recipient District1] = "Khordha" THEN [c.origin to depo route] ELSEIF [District Parameter] = "All" OR [District] = [District Parameter] THEN [routes] END
- 第二个图层(仓库-收件地段)计算逻辑:
IF [District Parameter] = "BARGARH" and [Name of the Recipient District1] = "Khordha" THEN [c.depo to receipent route] END
两个字段都拖到标记卡的空间图层位置后,分别选中每个图层设置颜色、大小、线型即可。
内容的提问来源于stack exchange,提问作者Sameer
相关产品推荐
相关产品推荐

