Slide 1

Slide 1 text

⚡Lightdashを試してみた

Slide 2

Slide 2 text

自己紹介 株式会社オープンエイト CS企画部 データ戦略グループ 香村 貴之 / Komura Takayuki ・データ基盤の開発・保守 ・Salesforceのシステム管理者 @k_data_engineer

Slide 3

Slide 3 text

アジェンダ 1. Lightdashとは? 2. 実行環境の準備 3. できること/できないこと

Slide 4

Slide 4 text

・所謂BIツールに属するサービス ・有名どころだとUI/UXがLookerに似ている ・OSS(無償)とCloud(有償)で提供されている ・dbtのプロジェクトをベースに、抽出する  デー タ(カラム)を選択できる Lightdashとは? 特徴

Slide 5

Slide 5 text

・data build toolの略称 ・ELT処理のTをSELECT文で実装できる ・OSS(無償)とCloud(一部有償)で提供されている ・yml形式でunique/not nullといったテストの実装  や、descriptionの定義ができる ・データリネージを自動で生成してくれる 特徴 dbtとは?

Slide 6

Slide 6 text

実行環境の準備 Google Compute Engine (Container-Optimized OS) Google Compute EngineのContainer-Optimized OSインスタンスを起動します。 Dockerイメージをもとにdbtを起動します。

Slide 7

Slide 7 text

実行環境の準備 Google Compute Engine (Container-Optimized OS) $ dbt init のコマンドでdbtのプロジェクトを作成します。 加工前サンプル用データを BigQueryに用意しておき、dbtで加工処理を実装した上で $ dbt run のコマンドで加工後のテーブルを BigQueryに作成します。

Slide 8

Slide 8 text

実行環境の準備 Google Compute Engine (Container-Optimized OS) Githubリポジトリに、dbtプロジェクトのコードを pushします。

Slide 9

Slide 9 text

実行環境の準備 Google Compute Engine (Container-Optimized OS) DockerイメージをもとにLightdashを起動します。 接続先をGithubリポジトリにして、dbtプロジェクトのコードを Lightdashから参照できるようにします。

Slide 10

Slide 10 text

実行環境の準備 Google Compute Engine (Container-Optimized OS) これでLightdashからBigQueryにSQLを投げ、データ抽出及び可視化ができるようになります。

Slide 11

Slide 11 text

サンプルデータの説明 データセット pokemon_mart pokemon_warehouse テーブル pokemons (ポケモンの基本データ ) types (ポケモンのタイプデータ ) pokemon_details (ポケモンの詳細データ )

Slide 12

Slide 12 text

できること/できないこと Explore>Tables:データ抽出、グラフ化を行うページ

Slide 13

Slide 13 text

Explore>Tables:データ抽出、グラフ化を行うページ できること/できないこと version: 2 models: - name: pokemon_details description: ‘ポケモンの詳細データ ’ meta: label: ‘DM:ポケモン詳細データ ’ config: tags: [‘data_mart’]   通常はnameフィールドの文字列が表示されるが、 meta フィールドを追加することで、テーブルの表示名を制御で きます。 pokemon_details.yml

Slide 14

Slide 14 text

Explore>Tables:データ抽出、グラフ化を行うページ できること/できないこと version: 2 models: - name: pokemon_details description: ‘ポケモンの詳細データ ’ meta: label: ‘DM:ポケモン詳細データ ’ config: tags: [‘data_mart’]   接続先を設定する際にタグを指定すると、そのタグがつ けられたテーブル(モデル)のみを表示させることができ ます。 pokemon_details.yml

Slide 15

Slide 15 text

    できること/できないこと Lightdash Project Project Project ・tagA ・tagC ・tagB ・tagC 全てのテーブルが表示される tagA,tagCが設定されたテーブルが表示される tagB,tagCが設定されたテーブルが表示される 接続先 タグ

Slide 16

Slide 16 text

Explore>Tables:データ抽出、グラフ化を行うページ できること/できないこと pokemon_details.yml   columns: - name: pokemon_id meta: dimension: label: ‘図鑑ナンバー’ metrics: count_pokemon_id: label: ‘(CountDis)図鑑ナンバー’ type: count_distinct - name: pokemon_name metaフィールドを追加し、その中で dimensionやmetrics を定義すると、Lightdash上で選択できるようになりま す。

Slide 17

Slide 17 text

Explore>Tables:データ抽出、グラフ化を行うページ できること/できないこと

Slide 18

Slide 18 text

Explore>Tables:データ抽出、グラフ化を行うページ できること/できないこと 選べるグラフは ・縦棒グラフ ・横棒グラフ ・折れ線グラフ ・散布図 ・テーブル形式 ・単一数値 の6種類 ファネルグラフや円グラフを作ることはできません。 また、一部のdimensionをpivotさせてピボットテーブルを作 ることもできません。 (クロス分析ができないのが残念ポイン ト)

Slide 19

Slide 19 text

Explore>Tables:データ抽出、グラフ化を行うページ できること/できないこと

Slide 20

Slide 20 text

Explore>Tables:データ抽出、グラフ化を行うページ できること/できないこと フィルターの組み合わせは ・All(全てand条件) ・Any(全てor条件) のどちらかしか選べないため、 A and B and (C or D) といった条件を表現できません。 また、複数のdimensionを組み合わせたり、関数を使ったカ スタムフィルター的なものを作ることもできません。

Slide 21

Slide 21 text

Browse>Dashboards:保存したグラフを並べてダッシュボードを作るページ できること/できないこと

Slide 22

Slide 22 text

Browse>Dashboards:保存したグラフを並べてダッシュボードを作るページ できること/できないこと グラフ単位でフィルターをかけることができません。 例えば、DM:ポケモン詳細データ タイプ1というフィルターを 追加し、条件にでんきを入力したとします。 この際裏側では、DM:ポケモン詳細データ テーブルから生 成された全てのグラフに対して、 WHERE タイプ1 = ‘でんき’ という条件が付与されます。

Slide 23

Slide 23 text

Browse>Dashboards:保存したグラフを並べてダッシュボードを作るページ できること/できないこと また、フィルターは全て and条件で処理されます。 例えば、DM:ポケモン詳細データ タイプ1とDM:ポケモン詳 細データ タイプ2をフィルターに追加し、それぞれの条件に でんきを入力したとします。 この場合、 WHERE タイプ1 = ‘でんき’ AND タイプ2 = ‘でんき’ という条件が、DM:ポケモン詳細データ テーブルから作られ た全てのグラフに付与されます。

Slide 24

Slide 24 text

まとめ ・dbtのプロジェクトを整備しておくことで、GUIベースでデータ 抽出・可 視化できる状態を作れるのが便利! ・簡単な集計はLightdash、複雑な集計はcsvで落としてExcelで 集計 と割り切るのはありかも? ・今後のアップデートに期待が高まる💪