有人能解释一下Tableau里的ATTR( )函数吗

ATTR属于tableau聚合函数中的一种,官方给出的解释是 “如果给定表达式对于组中的所有行仅具有单个值,则返回改表达式的值,否则显示星号(*)。会忽略Null值。”
或者举个栗子会更容易去理解。我们使用tableau万能的超市数据来看看这个函数是怎么样的。
首先,创建一个ARRT的计算字段
有人能解释一下Tableau里的ATTR( )函数吗

然后,把这个字段拖放到标记卡的标签,再把字段拖到行功能区,如下图
有人能解释一下Tableau里的ATTR( )函数吗

看到每个细分都对应出来了一个值(尽管这个值是文本格式),这就说明了公司、消费者和小型企业是一一对应的关系(这个栗子是不是在说废话)。。。那我们换一个维度看看,比如换为,
【有人能解释一下Tableau里的ATTR( )函数吗】 有人能解释一下Tableau里的ATTR( )函数吗

好的,星号出来了,为什么星号出来了呢?那是应该每个办公用品的类别对应了有不同细分的情况,也就是说来买办公用品的客户群体既有公司的,也有消费者和小型公司的,这个时候就是一对多的关系,不再是唯一,所以就出来星号了。
这个是基于维度建的计算字段,我们可以再看看建一个度量的情况,比如ATTR(),可以猜到,如要要不出现星号,那基本上是粒度去到最小才会显示了,直接上图吧
有人能解释一下Tableau里的ATTR( )函数吗

有人能解释一下Tableau里的ATTR( )函数吗

有人能解释一下Tableau里的ATTR( )函数吗

有人能解释一下Tableau里的ATTR( )函数吗


■网友
最简单的理解,attr是用来聚合维度的。
严谨一点的说法就是让某字段不影响视图的详细级别(粒度)。通常度量是会执行聚合的动作,所以不会影响视图详细级别。而维度是会影响的,如果把维度改成属性,那tableau就会自动帮你加上attr(),这样这个维度就和度量一样被聚合了。
其实维度也可以用聚合函数来聚合的,只是大多数维度是字符串,没办法用sum之类常用聚合函数,但max和min却是数字和字符串通吃。所以你要是愿意,用max或min来代替掉attr()也行。
又其实,attr的算法就是比较这个字段的max和mim是否相等,若相等就返回这个字符串,若不等就返回星号。
所以,为什么要聚合维度呢?在tableau里最常见的理由就是在聚合计算中,有时需要用维度去做一些辅助计算,而聚合计算是要求所有字段都必须在聚合状态下的,这时你就必须要聚合维度了。
以上,不知道有没有解释清楚。


■网友
近期看过的一篇文章:ATTR() - Tableau\u0026#39;s Attribute Function Explained


    推荐阅读