Stairlight v0.2.0 を公開しました
データリネージツール Stairlight の v0.2.0 を公開しました。
Stairlight とは
テーブルレベルのデータリネージツールです。詳しくはこちらの記事をご参照ください。
主なアップデート
- ラベル機能
- 同じテーブルを複数回結合している SELECT への対応
- Python 3.10 対応
1. ラベル機能
SQLファイルとテーブルのマッピング設定に、ラベル機能(=タグ機能) を追加しました。
mapping.yaml ファイルにて、各テーブルに対して、任意のラベルを key-value 形式で複数設定できます。
SQLファイルに紐づくテーブルに対しては mapping
で設定すればよいですが、SQLの中にしか現れないテーブルについては、以下のように metadata
のセクションに設定します。
mapping: - file_suffix: "tests/sql/main/test_b.sql" tables: - table: "PROJECT_D.DATASET_E.TABLE_F" params: PROJECT: PROJECT_J DATASET: DATASET_K TABLE: TABLE_L labels: source: fs app: stairlight metadata: - table: "PROJECT_A.DATASET_A.TABLE_A" labels: source: Null test: a
設定したラベルは出力結果に含まれますので、出力結果からさらにラベルでフィルタリングする、といったことができます。 たとえば、特定の部署やサービスに依存するデータパイプラインのみを抽出したい、といった使い方ができるかなと思います。
CLI では、up/down コマンドに --label (-l) オプションを追加しました。
これまでは --table オプションでテーブルを指定して 依存関係を抽出していましたが、ラベルを指定してまとめて抽出できるようになりました。
# app=stairlight と env=production というラベルが設定されている各テーブルについて、その下流に位置するテーブルを出力 stairlight down -l app:stairlight -l env:production
2. 同じテーブルを複数回結合している SELECT への対応
SELECT 文で、同一のテーブルを複数回結合しているケースに対応できるようになりました。
以下は、test_project.beam_streaming.taxirides_realtime
テーブルを2回結合している SELECT 文を読み取った例ですが、
ファイルの6行目と15行目の2箇所を検出できています。
"test_project.beam_streaming.taxirides_aggregation": { "test_project.beam_streaming.taxirides_realtime": { "type": "fs", "file": "tests/sql/main/test_union_same_table.sql", "uri": "/stairlight/tests/sql/main/test_union_same_table.sql", "lines": [ { "num": 6, "str": " test_project.beam_streaming.taxirides_realtime" }, { "num": 15, "str": " test_project.beam_streaming.taxirides_realtime" } ] } },
3. Python 3.10 対応
2021/10/4 にリリースされた Python 3.10 に対応しました。
PyPi パッケージ の Requires の範囲を広げ、GitHub Actions での CI テスト対象に追加しています。