public note

Stairlight v0.3.0: データソースとして Redash に対応しました

データリネージツール Stairlight の v0.3.0 を公開しました。

Stairlight とは

テーブルレベルのデータリネージツールです。詳しくはこちらの記事をご参照ください。

ts223.hatenablog.com

ts223.hatenablog.com

主なアップデート

  1. データソースとして Redash に対応しました
  2. 出力結果の保存・読込先として Google Cloud Storage に対応しました
  3. Jinja パラメータ抽出機能を強化しました

github.com

1. データソースとして Redash に対応しました

Redash は、OSS として公開されている BI ツールです。Redash から任意の RDBMS や DWH に接続することで、クエリ実行結果をもとにしたグラフやダッシュボードの作成、アラート通知をすることができます。

今回追加したのは、この Redash 自体のデータベース(PostgreSQL) に接続して、保存されているクエリを読み出す機能です。

この機能により、これまで Stairlight がターゲットとしていた DWH における ETL だけでなく、その後のデータ活用を行う領域も対象に加わりました。現在想定しているユースケースは、GCP の Cloud Composer で ETL を実行したあと、加工後のデータを読み出している BI ツールまで一気通貫でデータリネージを行う、というものです。

データソースを定義する設定ファイル (stairlight.yaml) の例です。

Include:
  - TemplateSourceType: Redash
    DatabaseUrlEnvironmentVariable: REDASH_DATABASE_URL
    DataSourceName: BigQuery
    QueryIds:
      - 1
      - 3
      - 5
Settings:
  MappingPrefix: "mapping"

PostgreSQL 接続文字列をセットした環境変数名と Redash が接続しているデータソースの名称、登録しているクエリ ID を指定します。*1

Redash には、クエリ内に変数を埋め込むことができる Query Parameters 機能がありますが、こちらにも対応しています。

以下の設定ファイルでは、例えば SELECT * FROM {{ table }} というようなクエリに対して、{{ table }} の部分に dashboards を埋め込んだ上でクエリの解析を行います。その他のデータソースと同じように、Tables に複数の要素を設定することで別個のクエリとして指定できる、という仕様にしています。

Mapping:
  - TemplateSourceType: Redash
    QueryId: 5
    DataSourceName: metadata
    Tables:
      - TableName: New Query
        Parameters:
          table: dashboards
        Labels:
          Category: Redash test

2. 出力結果の保存・読込先として Google Cloud Storage に対応しました

これまで、出力結果の保存・読込先はローカルのみでしたが、GCS にも対応しました。

--save--load オプションで GCS のパスを指定できるようになっています。

3. Jinja パラメータ抽出機能を強化しました

以前より、クエリ内に設定されている Jinja パラメータを自動抽出する機能はありましたが、すでに mapping.yaml へ設定済みのクエリに対しては、パラメータのチェックをしていませんでした。

今回のアップデートにより、stairlight check コマンドを実行すると、パラメータの指定が漏れているクエリも抽出できるようになりました。

今後の予定

大きめの内容としては、以下を予定しています。

*1:今後、ダッシュボードIDで抽出できる機能を実装する予定です。