⚡Lightdashを試してみた
View Slide
自己紹介株式会社オープンエイトCS企画部 データ戦略グループ香村 貴之 / Komura Takayuki・データ基盤の開発・保守・Salesforceのシステム管理者@k_data_engineer
アジェンダ1. Lightdashとは?2. 実行環境の準備3. できること/できないこと
・所謂BIツールに属するサービス・有名どころだとUI/UXがLookerに似ている・OSS(無償)とCloud(有償)で提供されている・dbtのプロジェクトをベースに、抽出する データ(カラム)を選択できるLightdashとは?特徴
・data build toolの略称・ELT処理のTをSELECT文で実装できる・OSS(無償)とCloud(一部有償)で提供されている・yml形式でunique/not nullといったテストの実装 や、descriptionの定義ができる・データリネージを自動で生成してくれる特徴dbtとは?
実行環境の準備Google Compute Engine(Container-Optimized OS)Google Compute EngineのContainer-Optimized OSインスタンスを起動します。Dockerイメージをもとにdbtを起動します。
実行環境の準備Google Compute Engine(Container-Optimized OS)$ dbt initのコマンドでdbtのプロジェクトを作成します。加工前サンプル用データを BigQueryに用意しておき、dbtで加工処理を実装した上で$ dbt runのコマンドで加工後のテーブルを BigQueryに作成します。
実行環境の準備Google Compute Engine(Container-Optimized OS)Githubリポジトリに、dbtプロジェクトのコードを pushします。
実行環境の準備Google Compute Engine(Container-Optimized OS)DockerイメージをもとにLightdashを起動します。接続先をGithubリポジトリにして、dbtプロジェクトのコードを Lightdashから参照できるようにします。
実行環境の準備Google Compute Engine(Container-Optimized OS)これでLightdashからBigQueryにSQLを投げ、データ抽出及び可視化ができるようになります。
サンプルデータの説明データセット pokemon_martpokemon_warehouseテーブルpokemons(ポケモンの基本データ )types(ポケモンのタイプデータ )pokemon_details(ポケモンの詳細データ )
できること/できないことExplore>Tables:データ抽出、グラフ化を行うページ
Explore>Tables:データ抽出、グラフ化を行うページできること/できないことversion: 2models:- name: pokemon_detailsdescription: ‘ポケモンの詳細データ ’meta:label: ‘DM:ポケモン詳細データ ’config:tags: [‘data_mart’] 通常はnameフィールドの文字列が表示されるが、 metaフィールドを追加することで、テーブルの表示名を制御できます。pokemon_details.yml
Explore>Tables:データ抽出、グラフ化を行うページできること/できないことversion: 2models:- name: pokemon_detailsdescription: ‘ポケモンの詳細データ ’meta:label: ‘DM:ポケモン詳細データ ’config:tags: [‘data_mart’] 接続先を設定する際にタグを指定すると、そのタグがつけられたテーブル(モデル)のみを表示させることができます。pokemon_details.yml
できること/できないことLightdashProject Project Project・tagA・tagC・tagB・tagC全てのテーブルが表示されるtagA,tagCが設定されたテーブルが表示されるtagB,tagCが設定されたテーブルが表示される接続先タグ
Explore>Tables:データ抽出、グラフ化を行うページできること/できないことpokemon_details.yml columns:- name: pokemon_idmeta:dimension:label: ‘図鑑ナンバー’metrics:count_pokemon_id:label: ‘(CountDis)図鑑ナンバー’type: count_distinct- name: pokemon_namemetaフィールドを追加し、その中で dimensionやmetricsを定義すると、Lightdash上で選択できるようになります。
Explore>Tables:データ抽出、グラフ化を行うページできること/できないこと
Explore>Tables:データ抽出、グラフ化を行うページできること/できないこと選べるグラフは・縦棒グラフ・横棒グラフ・折れ線グラフ・散布図・テーブル形式・単一数値の6種類ファネルグラフや円グラフを作ることはできません。また、一部のdimensionをpivotさせてピボットテーブルを作ることもできません。 (クロス分析ができないのが残念ポイント)
Explore>Tables:データ抽出、グラフ化を行うページできること/できないことフィルターの組み合わせは・All(全てand条件)・Any(全てor条件)のどちらかしか選べないため、A and B and (C or D)といった条件を表現できません。また、複数のdimensionを組み合わせたり、関数を使ったカスタムフィルター的なものを作ることもできません。
Browse>Dashboards:保存したグラフを並べてダッシュボードを作るページできること/できないこと
Browse>Dashboards:保存したグラフを並べてダッシュボードを作るページできること/できないことグラフ単位でフィルターをかけることができません。例えば、DM:ポケモン詳細データ タイプ1というフィルターを追加し、条件にでんきを入力したとします。この際裏側では、DM:ポケモン詳細データ テーブルから生成された全てのグラフに対して、WHEREタイプ1 = ‘でんき’という条件が付与されます。
Browse>Dashboards:保存したグラフを並べてダッシュボードを作るページできること/できないことまた、フィルターは全て and条件で処理されます。例えば、DM:ポケモン詳細データ タイプ1とDM:ポケモン詳細データ タイプ2をフィルターに追加し、それぞれの条件にでんきを入力したとします。この場合、WHEREタイプ1 = ‘でんき’AND タイプ2 = ‘でんき’という条件が、DM:ポケモン詳細データ テーブルから作られた全てのグラフに付与されます。
まとめ・dbtのプロジェクトを整備しておくことで、GUIベースでデータ 抽出・可視化できる状態を作れるのが便利!・簡単な集計はLightdash、複雑な集計はcsvで落としてExcelで 集計と割り切るのはありかも?・今後のアップデートに期待が高まる💪