2022年8月10日,发表于 数据探索

5分钟阅读

#职位 #职位 #职位 | 探索数据职位发布趋势

The Metabase Team Portrait
Metabase 团队
‧ 2022年8月10日,发表于 数据探索

‧ 5分钟阅读

#jobs #jobs #jobs | Exploring trends in data jobs postings Image

我们对数据职位趋势如何随时间演变很感兴趣,于是我们查看了我们最喜欢的社区之一 dbt Slack 上的职位发布。

自2021年以来,他们的 #jobs 频道每月有超过100个职位发布,因此我们将数据导入 Metabase,看看是否能找到任何规律。

Data jobs dashboard

您可以探索完整仪表板,或继续阅读我们的观察结果以及我们如何构建它的分步指南。

观察结果

职位发布数量似乎与 dbt 的用户群及其 Slack 社区同步增长。

超过 40% 的职位发布提到了远程工作的可能性。

自2021年以来,超过一半的职位发布是远程工作,而2021年之前的时期则只有20%。

分析工程职位是数据领域增长最快的职位,从2019年的6%增长到2022年的32%。(图表链接)

我们如何获取数据

将数据导入 Metabase

  1. 我们使用 Phantombuster 从 dbt 的 #jobs 频道中提取原始消息,并将其保存为 CSV 文件。
  2. 我们将 CSV 文件上传到 Google 表格中,并使用 fivetran 将 .csv 数据加载到 Postgres 数据库的表中。
  3. 然后我们将 Metabase 连接到 Postgres 数据库。(如果您的数据库已连接,可以跳过此步骤)。
  4. 然后我们将数据转换并在 Metabase 中创建为一个模型。如果您需要,可以模型的数据下载为 CSV、JSON 或 XLSX 文件。

在 Metabase 中处理数据

由于文本的非结构化特性,我们选择了 SQL 查询(而不是使用图形查询构建器)。

有些职位发布在频道中,有些则发布在该频道内的帖子中。我们将这些信息合并,并过滤掉对职位发布的回复和评论。我们使用简单的 CASELIKE 语句来提取以下信息:

  • 职位角色,
  • 该职位是否为远程,
  • 提及的任何可视化工具。

以下是我们用于创建模型的 SQL

WITH raw_messages
     AS (SELECT CASE
                  WHEN message_url LIKE '%thread_ts=%' THEN
                  Substring(message_url, '.*thread_ts=(.*)')
                  ELSE Substring(message_url,
                       'https://getdbt.slack.com/archives/C7A7BARGT/(.*)'
                       )
                END AS thread_id,
                message_url,
                created_at,
                text,
                username
         FROM   random_datasets.dbt_jobs_scrape_20220802_messages),
     raw_messages_with_order
     AS (SELECT m.*,
                Row_number()
                  OVER(
                    partition BY thread_id
                    ORDER BY created_at ASC) AS post_order
         FROM   raw_messages m),
     combined_messages
     AS (SELECT m1.thread_id,
                m1.message_url,
                m1.created_at,
                m1.username,
                String_agg (m2.text, ' ') AS combined_text
         FROM   raw_messages_with_order m1
                LEFT JOIN raw_messages_with_order m2
                       ON m1.thread_id = m2.thread_id
                          AND m1.username = m2.username
         -- take message from original poster only
         WHERE  m1.post_order = 1
         GROUP  BY m1.thread_id,
                   m1.message_url,
                   m1.created_at,
                   m1.username)
SELECT *,
       -- location
       CASE
         WHEN Lower(Replace(combined_text, 'Is this role remote?', '')) LIKE
              '%remote%'
       THEN true
         WHEN Lower(combined_text) LIKE '%is this role remote? yes%' THEN true
         ELSE false
       END AS is_remote,
       -- BI stack
       CASE
         WHEN Lower(combined_text) LIKE '%metabase%' THEN true
         ELSE false
       END AS stack_includes_metabase,
       CASE
         WHEN Lower(combined_text) LIKE '%looker%' THEN true
         ELSE false
       END AS stack_includes_looker,
       CASE
         WHEN Lower(combined_text) LIKE '%tableau%' THEN true
         ELSE false
       END AS stack_includes_tableau,
       CASE
         WHEN Lower(combined_text) LIKE '%power bi%' THEN true
         ELSE false
       END AS stack_includes_powerbi,
       CASE
         WHEN Lower(combined_text) LIKE '%hex%' THEN true
         ELSE false
       END AS stack_includes_hex,
       CASE
         WHEN Lower(combined_text) LIKE '%qlik%' THEN true
         ELSE false
       END AS stack_includes_qlik,
       -- role
       CASE
         WHEN Lower(combined_text) LIKE '%analyst%' THEN true
         ELSE false
       END AS role_analyst,
       CASE
         WHEN Lower(combined_text) LIKE '%analytics engineer%' THEN true
         ELSE false
       END AS role_analytics_engineer,
       CASE
         WHEN Lower(combined_text) LIKE '%data scien%' THEN true
         ELSE false
       END AS role_data_scientist,
       CASE
         WHEN Lower(combined_text) LIKE '%data engineer%' THEN true
         ELSE false
       END AS role_data_engineer
FROM   combined_messages
WHERE  combined_text IS NOT NULL

您可能还会喜欢

所有文章
数据栈的隐性成本图片 2023年5月12日,发表于 数据探索

数据栈的隐性成本

维护数据栈相关的一些不那么明显的成本的不完全列表,以及您可以如何控制这些成本。

The Metabase Team Portrait
Metabase 团队

9分钟阅读

GitHub 热门项目的巴士系数图片 2022年11月14日,发表于 数据探索

GitHub 热门项目的巴士系数

拥有最多星标的前一千个 GitHub 仓库的巴士系数是多少?

The Metabase Team Portrait
Metabase 团队

4分钟阅读

所有文章
© . All rights reserved.