“你能给我关于 X 的数据吗?”——数据科学家可能经常收到这个问题——我们的团队也是如此。
尽管在大多数情况下,人们要求的数据并不是他们真正需要的,但这仍然是一个不寻常的迹象。
我们为什么要为数据分析团队引入 OKR
我们意识到我们收到这些问题的原因之一是我们未能为自助式分析打下基础。我们需要面对现实并承认当前存在的问题
- 我们在教育人们如何使用和分析数据方面做得不好;
- 由于不同数据源之间的集成不佳,非工程师或不具备数据库和 SQL 知识的人无法组合数据进行分析;
- 数据科学成为数据驱动决策的瓶颈,甚至在我们速度太慢时阻碍了这些决策;
我们需要更好的策略来提高数据的可访问性——我们需要一个框架来统一团队并跟踪进度。这时我们转向了 OKR(目标和关键结果)。
什么是 OKR,它们为什么对分析团队有用?
战略需要转向提高数据可访问性和实现自助式分析,我们需要一个框架来正确地统一团队并能够衡量我们的进度。在此期间,我们公司开始研究 OKR(目标和关键结果)。OKR 是一种为团队设定的目标方法,可帮助您设定可衡量的目标。其核心思想是,您定义雄心勃勃的目标,每个目标都可以通过 3-5 个关键结果来衡量,可以使用以下模板
我将[目标],并通过[关键结果]来衡量。
我们的数据科学团队希望成为先驱,尝试这个框架。
我们的第一个 OKR:让数据在全公司范围内可访问
- 我们希望作为团队共同定义目标,以提高统一性和目标所有权;
- 我们希望能够以透明的方式衡量我们的进度;
- 我们的日常工作应与我们希望实现的目标紧密相连;
我们坐在一起分析了当前情况,以得出目标和关键结果。我们的目标是为未来更大的步骤奠定基础,并开始建立一个数据仓库结构,其中包含预先连接和处理过的表,业务用户可以轻松分析。因此,我们设定的一个示例目标是“公司中的每个人都可以访问数据”。
在 Metabase 中跟踪 OKR 进度
为了使我们的目标可见且可操作,我们在 Metabase 中创建了一个仪表板来跟踪 OKR 进度。每周,我们都会在 OKR 检查会议期间一起查看仪表板。
这包括我们用来衡量成功的以下关键结果
- 所有新的 Metabase 问题都使用集中式数据仓库
- Metabase 中的问题遵循一致的文件夹结构
- 仓库层中的每个表都有描述
- 业务用户使用的每个列都有描述
乍一看,这些似乎是非常基本的关键结果。然而,事实证明它们在衡量基本可访问性方面起着关键作用。
我们在 Metabase 中创建了一个仪表板,用于衡量我们的进度并在每周 OKR 进度检查会议期间查看数据

我们设置 Metabase OKR 仪表板的步骤
免责声明:以下步骤是针对使用 BigQuery 的仓库设置和使用 Postgres 数据库运行的 Metabase 实例量身定制的
- 将 Metabase 连接到您的 BigQuery 项目(文档)
- 将 Metabase 连接到存储 Metabase 数据的 Postgres 数据库(如何连接到 Postgres 数据库的文档)
- 创建您希望在仪表板中看到的问题(与下面的模板查询进行比较)
- 将所有新创建的问题组合到一个仪表板中。
查询模板
以下是一些查询模板,如果您想构建类似的内容,可以帮助您入门。为了使其适合您,您可能需要替换以下查询中的一些变量
<YOUR_DATA_REGION>:数据存储的区域,例如 region-europe-west1 <YOUR_GOOGLE_PROJECT_NAME>:您的 Google Cloud 项目名称
具有描述的 dbt 仓库表百分比
显示使用 dbt 创建的具有描述的仓库表和视图的进度。
我们为此使用了这个 SQL 查询
WITH descriptions AS (
SELECT
table_name,
1 AS has_description,
FROM `<YOUR_DATA_REGION>.INFORMATION_SCHEMA.TABLE_OPTIONS`
WHERE
option_name = 'description'
AND option_value <> '""'
AND table_schema LIKE 'dbt%'
)
SELECT
SUM(COALESCE(has_description, 0)) / COUNT(*) AS ratio
FROM `<YOUR_DATA_REGION>.INFORMATION_SCHEMA.TABLES`
LEFT JOIN descriptions USING(table_name)
WHERE
table_catalog = '<YOUR_GOOGLE_PROJECT_NAME>'
AND table_schema = 'dbt_marts'
具有描述的仓库列百分比
显示具有描述的仓库表列的进度。
我们为此使用了这个 SQL 查询
SELECT
SUM(IF(description IS NOT NULL AND description != '', 1, 0)) /
COUNT(*) AS ratio,
FROM `<YOUR_DATA_REGION>.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS`
WHERE
table_catalog = '<YOUR_DATA_REGION>'
AND table_schema = 'dbt_marts'
每个数据源新创建的 Metabase 问题
显示每月和每个数据源新创建问题的份额。不包括使用 Metabase 数据库的问题。
我们为此使用了查询构建器

最终思考:OKR 为何适用于数据分析团队
为我们的数据分析团队实施 OKR 帮助我们从被动支持(响应无休止的临时请求)转向主动赋能(构建赋能他人的系统)。我们更接近于成为一个推动战略而非仅仅报告战略的团队。
如果您的团队被一次性数据请求淹没或在统一方面遇到困难,设定 OKR 可能是您需要为工作带来清晰度、所有权和动力的改变。