层级是存储值的绝佳方式。但是,对于 LookML type: tier
维度,这些存储分区是预定义且静态的。有时,您可能需要创建允许用户更改存储桶大小的动态层级。在 Looker 中,您可以将仅过滤器字段(称为 parameter
参数)与模板语言(称为液体)结合使用。
如果您拥有创建或修改自定义字段的权限,还可以使用“自定义分箱”在“探索”中以原生方式创建动态层级。
如需创建动态层级,请执行以下操作:
-
创建一个参数
type: number
,以用作前端过滤条件字段,用户可以在其中输入所需的数字存储桶大小。 -
创建一个使用液体变量
{% 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 年分区分组的年龄,因此请在 Age Tier Bucket Size 过滤条件中输入值 10:
dynamic_age_tier
维度中的 SQL 表达式将底层 ${TABLE}.age
列中的年龄值(例如 25)除以 10 的参数值,得到 2.5。值 2.5 会被 TRUNCATE
函数截断为 2,然后乘以参数值 10 得出 20。20 成为存储桶;20 到 29 之间的任何年龄值都包含在 20 存储桶中。