CalcDim - 图表函数
在维度表达式中使用时,CalcDim() 将覆盖引擎对表达式内部处理方式的自动解释。具体而言,该函数可防止在数据模型中创建新的内部字段。相反,应用程序中的选择将被视为原始数据模型中适用字段中的选择。
此功能无法在加载脚本中使用。此外,提高系统性能的最佳做法是尽量通过加载脚本将计算维度中使用的字段作为逻辑字段加载。CalcDim() 提供了一种在无法从脚本加载已计算字段情况下控制引擎行为的方法。
在 Qlik Sense 中,维度表达式默认为即时字段,也就是说,作为一个实际字段,在当前选择条形中显而易见,并按需创建。选择会应用和推断到该字段,类似于脚本内的任何逻辑字段。
用 CalcDim() 包装的表达式的行为方式与所有计算维度表达式在 QlikView 中的行为方式相同,即计算值与底层源字段值的临时映射。所有已计算字段都可以通过 CalcDim() 功能转移到计算维度中,因为计算维度与相应已计算字段相比,根据数据模型需要满足的要求更少。在某些情况下,数据模型可能会阻止使用已计算字段即时计算,而在其他情况下则不会,为了保证所有计算维度都有类似行为,这种转换可能是可取的。
语法:
CalcDim(expr)
返回数据类型: 双
参数 | 描述 |
---|---|
expr |
作为维度使用的表达式,或作为维度表达式中的分段使用的表达式。 |
适合使用 CalcDim 的情况
CalcDim() 在需要对 Qlik 引擎如何处理维度表达式中调用的字段进行更多控制时非常有用。
默认情况下,当使用自定义维度表达式时,Qlik Sense 会自动地决定是否在数据模型中创建和引用内部字段。Qlik Sense 创建并且尽量使用这些内部字段。在不可能的情况下,表达式会参照其所依赖的现有数据模型字段来进行处理。
根据您的使用情况,这种自动处理可能并非总是可取。例如,如果在维度表达式中使用变量,自动创建新字段就会发生问题。在这种情况下,请使用 CalcDim() 强制在不使用此方法的情况下处理表达式。
某些常见用例如下:
-
您已将 QlikView 内容迁移到 Qlik Sense ,并希望保留 QlikView 对计算维度的处理方法。
-
您希望简化应用程序中的选择行为。例如您希望将字段选择显示为原始数据模型中字段的选择,而不是新字段的选择。
-
您的用例需要一种临时表达方式,以保证一致性和性能。例如,如果您的维度表达式包含用户可控的动态可视化参数,如可控格式、截止值或句点。
示例 | 结果 |
---|---|
=CalcDim(if(Year < 2023, 'Older', Year)) |
在使用此维度的可视化中进行选择,将被处理并显示为数据模型中相关 Year 字段值的选择。 反之,假设您没有用 CalcDim() 包装表达式。在这种情况下,它看起来就像这样: =if(Year < 2023, 'Older', Year) 在上述表达式中进行选择会被处理并显示为内部字段 =if(Year < 2023, 'Older', Year) 中的选择,而数据模型中并没有这个字段。 |