如何创建切换按钮以切换报表所用的日期关联关系?
哈哈,你已经搞定了核心的DAX计算,接下来做切换按钮其实有两种很实用的方法,我给你详细拆解下:
方法一:用参数+动态DAX度量值(推荐,更灵活)
这种方法不需要维护多组可视化,只用一个通用度量值就能实现切换,步骤如下:
- 第一步:创建日期切换参数表
点击「建模」选项卡 → 「输入数据」,新建一个名为DateSwitch的表,包含一列DateType,填入两个值:生效日期、会计日期,然后加载数据。 - 第二步:添加切换按钮(切片器)
把DateSwitch[DateType]拖到画布上,选择「切片器」视觉对象,然后在格式面板里把切片器类型改成「按钮」,并设置为「单选」模式,这样就得到了两个切换按钮。 - 第三步:写动态切换的度量值
替换你之前的两个单独度量值,写一个通用的度量值,根据用户选择的日期类型自动切换计算逻辑:
Total Premium = VAR SelectedDateType = SELECTEDVALUE(DateSwitch[DateType], "生效日期") // 默认选中生效日期 RETURN IF( SelectedDateType = "会计日期", // 切换到会计日期的非活跃关系 CALCULATE(SUM(Premiums[Premium]), USERELATIONSHIP(Premiums[AccountingDate], Dates[Date])), // 默认用生效日期的活跃关系,直接求和即可 SUM(Premiums[Premium]) )
- 第四步:更新所有可视化
把报表里所有用到保费的可视化,都替换成这个新的Total Premium度量值,现在点击切换按钮,所有图表就会自动切换日期依据啦!
方法二:用书签切换(适合复杂布局场景)
如果你的报表需要在切换日期时展示完全不同的布局或视觉对象组合,可以用书签来实现:
- 第一步:准备两组可视化
在页面上创建两组可视化:一组用Sum(Premiums[Premium])(生效日期),另一组用你写的Total Premium by AccDate(会计日期),暂时把其中一组隐藏起来(在视觉对象的格式面板里设置「可见性」为关闭)。 - 第二步:创建两个书签
点击「视图」选项卡 → 「书签」面板,点击「添加」按钮创建第一个书签,命名为「生效日期视图」,确保此时生效日期的可视化是显示的,会计日期的是隐藏的;然后切换显示会计日期的可视化,隐藏生效日期的,再添加第二个书签「会计日期视图」。 - 第三步:把书签做成按钮
在画布上添加「按钮」视觉对象,选择「书签」类型,关联刚才创建的两个书签,用户点击按钮就能切换显示对应的可视化组合了。
两种方法的对比
- 参数+DAX方法:维护成本低,只用一个度量值,所有可视化同步切换,适合大多数常规报表场景。
- 书签方法:适合需要切换布局、显示/隐藏不同视觉对象的复杂场景,但如果视觉对象很多,维护起来会比较麻烦。
内容的提问来源于stack exchange,提问作者Serdia




