最小化即兴分析
在我们的公司,我们遵循数据民主化策略。这意味着我们积极避免数据孤岛,并在整个公司范围内共享数据知识。对每个人来说都是完全透明的。有了 Metabase 作为我们的 BI 工具,这变得非常容易,我帮助人们快速上手。但有时,我们需要在数据仓库的报告中创建一个全新的表格模型,以回答问题。在大多数情况下,构建一个新模型将花费太多的精力,所以我会在 Metabase 的 SQL 编辑器中编写一个即兴查询。
这可能导致很多调整,因为人们感兴趣的不仅仅是细节。但大多数问题都出现在我完成最后一个查询之后,这消耗了很多资源,我的同事需要等待我完成 WHERE 子句中的表达式修改。
这些反复出现的问题有其位置,表明人们实际上对该数据很感兴趣。那么,如果我能让我的同事自己更改过滤器,使整个过程更加高效、可定制和用户友好呢?
这正是我使用变量所做的事情。
从 Metabase 中的变量开始
Metabase 中的变量是一种将用户输入插入现有 SQL 代码的绝佳方式。它们以 {{}} 开头,并创建一个过滤器小部件。这个小部件接受用户输入,并将其直接放置在变量的位置。这里有一个简单的例子
使用 [[]] 可以使表达式可选。只要没有输入对应的筛选组件,它对源代码就是不可见的。当使用多个筛选器时,效果最佳。
如您所见,您不受筛选组件数量的限制。如果您有一个包含大量筛选选项的大查询,只需将可选子句链接在一起。如果您这样做,最佳实践是使用 WHERE 块以 1 = 1 开始,因为这是一个有效的筛选子句,可以独立存在。因此,如果没有为任何组件提供输入,您的代码仍然可以正常工作。
简要说明:日期组件看起来略有不同。这是由于数据类型。您可以选择 Metabase 能够原生解释的 3 种数据类型。对于这两个组件,我选择了“日期”,它创建了一个可点击的日期选择器组件。
这是我必须学习的基础知识,希望我已经为您提供了关于这些内容的良好而快速的概述。
在某个时刻,我想:“嘿,这只是文本。就像 Python 中的 f-string。” 因此,我开始尝试使用一些 SQL 函数来操作这个输入。结果证明,什么都可以用,所以我决定构建一些酷的东西,比如可以接受多个关键词作为输入的筛选器。如果您对此感兴趣,请查看我在 Medium 上关于变量的详细文章:使用 Metabase 中的变量。