1 概述
模型参数即在数据模型中定义的参数,模型参数是用于动态设定报表和查询条件的变量,用户可以根据需要设定参数值,从而灵活地调整数据模型的输出结果。
2 模型参数适用什么场景
用户查询时,需要强制默认带上查询条件,减少查询数据量提升查询性能,如银行/证券股常用日期作为分区字段,默认带上日期作为查询条件,命中分区性能才会快。
需要根据不同的参数值输出不同内容,如SQL查询中根据不同参数值,查询不同的表字段内容作为输出字段。
计算度量、计算列、命名集、计算成员等需要引用前端输入的参数值做不同的计算。
如非以上情况,为了数据模型尽量通用(一个主题的模型可支撑该主题业务的所有查询诉求),不建议用数据模型参数,建议在报表层拖筛选器解决,虽然数据模型参数依然可实现旧数据集需要支持的能力。
默认生效解决的是什么场景?什么问题?
比如在模型中设了3个参数,在仪表盘中只用了2个参数,但是还是会按3个参数来过滤。
如下图,在模型定义了2个参数,一个”区域“、一个”省份“,在报表层上只拖了一个”区域“参数,但还是会按照"省份"的默认值去过滤数据,如果想要查看全部区域数据这样就显示不出来。所以增加了一个“默认生效”的选项来进行控制,当不想要“省份”默认生效时,可以把“省份”参数的“参数生效”选项,设为不勾选。
原理:
1、“默认生效”勾选状态 当选择了“默认生效”选项时,无论用户是否在可视化界面上设置了参数值,该参数都将自动应用。这意味着即使用户没有手动输入参数值,系统也会采用参数的默认值来进行计算或过滤,从而实现了参数的强制生效!
2、如果不勾选“默认生效”,则表示参数的使用将遵循按需原则。具体来说:
- 如果取数子图中没有选择与参数相关的表或查询,则该参数不会生效;即使参数被拖入报表中,但如果它与查询的数据不在同一个子图中,该参数也不会生效。
- 只有当参数与查询的数据位于同一个子图中时,该参数才会生效,并且也只对它所映射的那张表生效(即在报表层使用参数时候,只会过滤映射的那张表的数据)。
详细可查看:参数原理视频讲解.mp4。
2 适用场景
...
在数据分析过程中,我们经常需要使用参数来过滤或计算数据。“默认生效” 是模型参数的一个重要特性,它决定了参数是否自动应用默认值进行数据处理。简单来说:
1.1 子图
以"事实表"为中心,通过表或者查询的关系建立一个子图,子图(也可以理解为扩展表),也可以理解为数据模型中的每个表都可构建一个子图,A表的子图是以A表为中心,根据筛选方向即箭头指向它的代表能筛选它的表,都会把它纳入子图中。
2 示例说明
2.1 同子图场景:参数默认生效强制应用
信息 |
---|
可以点击链接跳转到外部体验环境查看示例。 |
1、以产品内置的northwind创建数据模型,在数据模型中创建SQL查询,并且使用参数"区域"、“省份”参数进行过滤:
2、保存SQL查询,回到数据模型主界面,添加“订单明细表”、“产品表”到数据模型中,并且设置好关联关系:
3、在设置参数中映射参数,并且定义参数的默认值、备选值,把2个的“参数生效”:默认生效 设为勾选:
预览“区域”参数的默认值为:“华北”:
4、去创建透视分析并且把“省份“的参数拖入到过滤条件,”区域“参数不拖,效果如下图:
虽然“省份”查询“全部”的数据,但是还是会根据”区域“的默认参数进行查询。
5、把”区域“的”参数生效“改成不勾选,清空缓存之后,刷新报表,报表结果仍会继承”区域“参数的默认值:
总结:在同一个子图中的参数,即使是没有”勾选“,报表层也没有拖入该参数,仍然会自动应用该参数的默认值。
2.2 同子图场景:参数默认生效只影响所映射的表
信息 |
---|
可以点击链接跳转到外部体验环境查看示例。 |
2.3 不同子图场景:参数默认生效不触发
信息 |
---|
可以点击链接跳转到外部体验环境查看示例。 |
以2.1示例为创建的数据模型和参数进行说明
1、创建透视分析,想要查询产品个数,把”产品编号“复制转度量,再自定义度量中切换汇总依据为”唯一计数“:
2、创建透视分析,如下图,把”省份“、”区域“参数都拖入到产品中,切换参数,然后不会对”产品个数“产生联动影响。
因为”省份“、”区域“参数所属的orders 与 产品个数所属的”产品表“属于不同的子图:
如果子图中没有选择与参数相关的表或查询,则该参数不会生效;即使参数被拖入报表中,但如果它与查询的数据不在同一个子图中,该参数也不会生效。