【发布时间】:2014-12-25 20:00:08
【问题描述】:
我想使用仅包含 id 子集的辅助数据源为图表着色:
我有一个将项目与开始日期和大量供应商相关联的主要数据源 - 一个项目可能有很多供应商。我有一个辅助数据源,它将我的一部分供应商链接到一个表明他们所在层级的排名。
我想按项目年份制作面积图,用颜色细节显示供应商层级的细分。由于一个项目可能涉及许多供应商,我想按所涉及的任何供应商的最高层(例如 max(tier))为每个项目着色。不在我的辅助数据源中的供应商应分配到最低层 (0)。
我的辅助资源中有一个计算字段,它生成一个代表排名中的层级的数字(排名越低越好,任何排名都比没有好):
Tier: if isnull([rank]) then 0 else if [rank] >= 200 then 2 else 1
在我的主要中,我定义了另一个计算字段来按层对每个项目进行聚合:
VendorClass: if max[Secondary].[tier] == 0 then "Low vendors" elseif max[Secondary].[tier] == 2 'Top Vendors' else 'Mid Vendors'
但是,当我尝试绘制项目 ID 与 VendorClass 的不同计数时,我看到每个项目都获得相同的 VendorClass('Top')。
我怀疑这是由于 VendorClass 字段删除了辅助项中存在空值的项目,尽管计算字段尝试将空值变为 0。
任何帮助表示赞赏.....
更新:
这是我的表格:
主要来源:
项目:
project_id | name | date_started | etc.
123 | project1 | 2009-01-01
456 | project2 | 2010-01-01
789 | project3 | 2010-06-01
供应商:
vendor_id | name | address | etc.
1 | Foo | main st
2 | Bar | state st
3 | Fob | church st
4 | Bof | broadway
项目供应商
project_id | vendor_id
123 | 1
123 | 2
456 | 2
456 | 3
456 | 4
789 | 3
789 | 4
次要来源:
vendor_id | rank | tier
1 | 1 | 2
2 | 200 | 1
注意:我可以从我的数据源传递层级或将其计算为辅助字段中的字段 - 没关系 - 但关键是不在此表中的供应商(例如 3 和 4)应分配到层0. 由于供应商的数量和保持同步的问题,将每个供应商都添加到此数据源是不切实际的。
我想要一个图表来显示每年不同项目的总数,但我希望每个案例的颜色代表该项目中任何供应商的最高级别:
2009 年有一个项目,有 2 个供应商,其中最大层级是 2(供应商 1),因此它是列 1 高的单位,例如第 2 层为蓝色。
2010 年有两个项目。 456 的最大层级为 1(供应商 2),789 的最大层级为 0(供应商 3 和 4),因此 2010 的列高为 2 个单位,例如第 1 层为绿色,其中一个段,例如第 0 层为红色。
【问题讨论】:
-
这令人困惑。尝试简要了解一下您的表格和您正在使用的内容作为关键,以便我们更好地了解您拥有什么以及您想要实现的目标
-
无论如何,您并没有处理表 1 中的条目与表 2 没有对应关系的情况。您只是在处理可能出现在表 2 本身上的空值。但这不是您问题的根源(否则它将落在 ELSE 语句上,而不是 ELSEIF 上)。需要查看表格和密钥以了解正在发生的事情
标签: tableau-api