Upgrade to Pro — share decks privately, control downloads, hide ads and more …

⚡Lightdashを試してみた

 ⚡Lightdashを試してみた

k_data_analyst

May 17, 2022
Tweet

More Decks by k_data_analyst

Other Decks in Technology

Transcript

  1. ⚡Lightdashを試してみた

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. 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上で選択できるようになりま
    す。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide