过滤器在模型构建中可能非常有用,并且可以广泛使用,但是它们可以以牺牲性能为代价 - 通过用户在仪表板上的使用非常可见。
绩效还可以击中进口和出口,这反过来可能导致其他活动的阻塞,从而导致对模型的感知不佳。
有一些非常简单的准则可以设计出良好的过滤器:
尝试创建一个布尔式订单项,该项目包含您要应用的所有过滤条件。这使您可以重新使用订单项,并将一系列布尔式订单项组合到单个布尔值中,以供过滤器使用。
例如,您可能需要在三个数据点上过滤:音量,产品类别和活动状态。卷是数字,产品类别是列表格式化的订单项,与用户选择匹配,而活动状态是布尔值。
创建一个名为的行项目筛选具有以下公式:
音量>最低vol和product cat =用户选择。类别和活动状态
这是一个非常简单的示例模块,可以证明这一点:
一个筛选添加行项目以表示我们在视图上需要的所有过滤器。只有用户才能尺寸尺寸。
一个用户选择仅创建模块维度来捕获特定用户的过滤器选择:
在应用过滤器之前,这是数据:这是应用过滤器的数据:
最佳练习建议是为每个过滤器零件创建一个过滤器模块和订单项。您可能需要其他过滤器,然后可以根据需要从此系统模块中组合每个过滤器。这应该减少重复,并使您控制过滤器,以确保它们都可以成为布尔。
过滤器最大的性能是在行上嵌套尺寸时。
嵌套维度及其所包含的水平数量显着增加了性能损失。使用平面列表与嵌套尺寸(相同数量的项目过滤),嵌套过滤器的速度将慢。这是用10,000,000列表进行测试的,其中2个列表的10列表和1,000,000个物品作为嵌套行;嵌套尺寸过滤器慢40%。
使用订单项摘要在行项目上过滤会很慢。
10,000,000个物品上的数字过滤器可能需要少于一秒钟,但摘要至少需要五秒钟。
多个过滤器将增加时间。
如果前面的任何过滤器不会降低负载,这一点尤其重要,因为它们需要额外的时间进行评估。如果您确实使用多个过滤条件,请尝试订购它们,以便首先是最有效的过滤器。如果过滤器通常不匹配任何内容,请评估是否需要。
隐藏级别充当过滤器。
如果将级别隐藏在复合列表上,则在应用任何其他过滤器之前,都像过滤器一样起作用。隐藏确实需要时间来处理,并且会根据列表的级别数量和大小而影响更多。
使用嵌套行是过滤一组复杂数据以进行导出的有用方法,但是,如上所述,这里的过滤性能可能很差。
围绕此的最好方法是枢转尺寸,因此行上只有一个维度,然后使用表格多列带有A的导出选项基于布尔的过滤行选项。
一些额外的过滤技巧包括以下内容: