层级是划分价值的绝佳方式。不过,对于 LookML type: tier
维度,这些分桶是预定义和静态的。有时,您可能希望创建一个动态层级,让用户可以更改分桶大小。为此,您可以在 Looker 中将仅限过滤条件的字段(称为 parameter
参数)与模板语言(称为 Liquid)结合使用。
如果您有权创建或修改自定义字段,还可以使用自定义分箱在“探索”中直接创建动态层级。
如需创建动态层级,请执行以下操作:
-
创建一个
type: number
参数,用作前端过滤字段,供用户输入所需的数字分桶大小。 -
创建一个维度,使用 Liquid 变量
{% parameter parameter_name %}
引用参数值。此维度用于确定各种存储桶,并会将存储桶大小动态更改为用户在前端过滤条件字段(parameter
参数)中输入的值。
例如,开发者创建了一个动态年龄段,让用户可以按自定义范围对年龄值进行分桶:
以下示例的 SQL 语法可能需要进行调整,以适应您的数据库方言。
parameter: age_tier_bucket_size { type: number } dimension: dynamic_age_tier { type: number sql: TRUNCATE(${TABLE}.age / {% parameter age_tier_bucket_size %}, 0) * {% parameter age_tier_bucket_size %} ;; }
用户现在可以在“探索”中为年龄列选择层级值。例如,用户可能希望将年龄分为 10 年一个桶,因此会在年龄段分桶大小过滤条件中输入值 10:
dynamic_age_tier
维度中的 SQL 表达式会将底层 ${TABLE}.age
列中的年龄值(例如 25)除以参数值 10,得出 2.5。值 2.5 会被 TRUNCATE
函数截断为 2,然后乘以参数值 10,结果为 20。20 成为分桶依据;20 到 29 之间的任何年龄值都包含在 20 分桶中。