tableau 集动作_【Tableau】高级互动的新秀之作:参数动作

在2018.3的版本中,Tableau推出了升级版的交互方式:集值,实现了更多的交互方法。而在2019.2的新版本中,Tableau推出了新的交互方式:参数动作,Parameter Actions 。这里我们带你一睹为快。

一、介绍

此前参数只能提前设定,并在右侧的控件中调整。如今,参数动作可以通过与视图中的标记交互,进而直接修改参数的值。不管是你的参数是日期、变量,用于分类或度量值,参数动作都可以让你使用视图的数据,作为直接的交互入口。比如下面的示例,通过点击不同的标题,视图可以产生相应的变化。它的原理是什么呢?

二、背后的原理是什么?

数据交互的本质是向视图传递假设参数引起相应的视图变化,借助数据的反馈辅助决策。过去我们使用参数,是把参数植入到筛选器、计算字段或参考线中,它们参与到视图的构建里;而依靠“参数控件”来调整传递的参数。参数动作并没有改变这个流程,只是增强了“参数控件”的方式,通过在视图上使用动作采集参数,整个交互更加流畅、方便、浑然一起。就像在photoshop中,你不再需要去色板去选择颜色,只需要用吸管在图像中拾取即可。

用上面的图,可以更加清晰地理解两种参数控制的区别,参数动作(或者称之为参数值)通过多种动作从视图中拾取参数值,而无需使用参数控件。

三、案例

下面,我们说几个示例,分别代表了不同的场景。其一是使用参数修改参考线,其二是分类钻取。我们使用之前表计算和集动作用过的数据,最后对比集动作和参数动作的差异。

1、交互参考线 INTERACTIVE REFERENCE LINE

在十大表计算的第一题中(【Tableau】10大Tableau表计算——深度解读),我们通过参数控件来更改视图的参考线日期,进而计算其他日期相当于参考日的百分比变化。使用参数动作功能,我们无需参数控件,代之以直接在视图中选择一个点,进而“拾取”所对应的日期作为参考日。

此题的计算逻辑无需变化,仅需要在视图上添加「参数动作」即可。方法如下:

工作表——操作——添加操作,选择我们想要改变的参数。

这里比较重要的地方是最下面的“值”---“字段”,假设我们只是选择了一个数值,那么无需聚合;但是如果访问者选择了多个数值怎么办?要么怎么都不做(none/无),要么就要指定一个方式,比如选择多个日期,可以使用最小值。

2、下钻 DRILLING DOWN A CROSSTAB

在分析集值的时候,我们分析了一个实现分类下钻的案例(下图动画,No.6 【Tableau】“集值”八大绝技:做可视化对比),如果我们换一下方式,能否使用参数来实现呢?

集值的逻辑就是选择的部分成为动态集,通过if判断,如果在集内,则返回子类的标题;同样的,我们可以用参数代替集,选择的类别成为动态参数,在参数中的类别,返回子类的标题。如果先做一个层次的下钻,就是如下的部分:

下一步就是通过参数动作,让参数随着选择而动态变化,如下图:

如此以来,选择就会引起参数的改变,而参数改变又通过计算字段(参数-team)引起视图的下钻变化。

如果我们要实现两级的选取如何?那就同样的道理,创建第二个参数,第二个计算字段,用同样的原理。不过这里需要注意一点,当我们选择第三季标题时,可能并不在第二级标题的范围之内,这样的钻取就没有意义了。如下图:

因此,我们就需要在第二个计算字段中增加一个判断,判断二级的标题还要在参数的范围之中,由于是一对多的关系,我们可以使用contain函数,这样就不会出现上面的错位情况了。if [team 参数]=[Team]and CONTAINS ( [参数-team], [Team] )

THEN [Player]else '' END

2+PLUS 集动作与参数动作的差异

当然,集动作和参数动作看上去实现的结果一样,但是会有重大的差异。集动作的控制更加精细,可以设置“清除动作后”的行为,比如取消选择,那么动态集也清除为空,这样就实现了全部折叠;但是参数不能为空,也没有“清除动作后”的选择。

通过集动作,可以传递多个数据,比如上面同时展开两个字段;但是参数的选择虽然可以多个,但是多个之后必须聚合为一个数值才能传递给视图。因此,我们要设定好如果访问者选择多个数据,字段应该如何聚合?

比如上面第一题,如果选择多个日期,我们可以选择“最大值”,那就就会以最近的日期为参考日期;同样,第二题,如果选择多个主分类,我们可以设置“最大值”,那就就会判断在数据源的先后顺序,如果此处选择“无”,多选时,系统就不会传递参数。

真正的BI是要帮助人们从与数据的互动中找到问题的答案的,参数动作进一步提高了互动的友好性,虽然和集值相比略显单薄,但是确实可以拉近互动的效率。

期待更多的案例分享给大家。

May 6, 2019

May 25, 2019

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
public class CoordTrans7Param { public double[,] values=new double[7,1]; //{{dx},{dy},{dz},{rx},{ry},{rz},{k}}; //public double   两个坐标系转换一般需要平移,旋转,缩放共七参数。 Y=(1+k)*M(x,y,z)*X+dX; public double[,] values=new double[7,1]; //{{dx},{dy},{dz},{rx},{ry},{rz},{k}}; //public double dx,dy,dz,rx,ry,rz,k; public void Set4Param(double dx,double dy,double dz,double k) { this.dx=dx; this.dy=dy; this.dz=dz; this.k=k; this.rx=this.ry=this.rz=0; } public void SetRotationParamRad(double rx,double ry,double rz) { this.rx=rx; this.ry=ry; this.rz=rz; } public void SetRotationParamMM(double rx,double ry,double rz) { SetRotationParamRad(rx*Math.PI/648000,ry*Math.PI/648000,rz*Math.PI/648000); } private double[,] GetMx() { double [,] Mx=new double[,] {{1,0,0}, {0,Math.Cos(rx),Math.Sin(rx)}, {0,-Math.Sin(rx),Math.Cos(rx)}}; return Mx; } private double[,] GetMy() { double [,] My=new double[,] {{Math.Cos(ry),0,-Math.Sin(ry)}, {0,1,0}, {Math.Sin(ry),0,Math.Cos(ry)}}; return My; } private double[,] GetMz() { double [,] Mz=new double[,] {{Math.Cos(rz),Math.Sin(rz),0}, {-Math.Sin(rz),Math.Cos(rz),0}, {0,0,1}}; return Mz; } private double[,] GetM() //M=Mx*My*Mz? or M=Mz*My*Mx? { double [,] M=new double[3,3]; MatrixTool.Multi(GetMz(),GetMy(),ref M); MatrixTool.Multi(M,GetMx(),ref M); return M; } private double[,] GetMdx() { double[,] mt = {{ 0, 0, 0 }, { 0, -Math.Sin(rx), Math.Cos(rx) }, { 0, -Math.Cos(rx), -Math.Sin(rx) }}; double[,] m=new double[3,3]; MatrixTool.Multi(GetMz(),GetMy(),ref m); MatrixTool.Multi(m,mt,ref m); return m; } private double[,] GetMdy() { double[,] mt = {{ -Math.Sin(ry), 0, -Math.Cos(ry) }, { 0, 0, 0 }, { Math.Cos(ry), 0, -Math.Sin(ry) }}; double[,] m=new double[3,3]; MatrixTool.Multi(GetMz(),mt,ref m); MatrixTool.Multi(m,GetMx(),ref m); return m; } private double[,] GetMdz() { double[,] mt = {{ -Math.Sin(rz), Math.Co

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值