Data Contract CLI の export コマンドに custom format を実装しました

こんにちは、chanyou です。 2024年の datatech-jp のアドカレ では、Data Contract CLI の実装を読み解く という記事を執筆しました。 記事でも触れていましたが Data Contract CLI へコントリビュートしたいと思いつつも、なかなか実現できずにいました。 が、思い切って以前からあったらいいなと思っていた機能の提案と実装をしまして、無事に v0.10.21 で反映されました。 これにより Data Contract CLI の利用シーンがさらに広がりそうなので、今回はその内容を紹介します。 実装した内容 記事タイトルにもある通り、Data Contract CLI の export コマンドに custom format を追加しました。 これにより、Data Contract から Jinja テンプレートを利用して任意の形式で出力できるようになります。 例えば、以下のような Jinja テンプレートファイル template.txt があるとします。 title: {{ data_contract.info.title }} このテンプレートを custom format として出力すると、以下のように変数 data_contract.info.title が展開されます。 $ datacontract export --format custom --template template.txt datacontract.yaml title: Orders Latest 実装した背景と想定されるユースケース 今回の機能により、固有のロジックを注入した出力が容易になりました。 従来は、独自のロジックを組み込んだ出力を行うために専用の Exporter を実装する必要がありました。 その方法は、Data Contract CLI を Python モジュールとしてインポートし、いくつかのクラスを定義するという手間がかかるものでした。 ...

February 7, 2025 · 1 min · chanyou

Data Contract CLI の実装を読み解く

これは datatech-jp Advent Calendar 2024 の20日目の記事です。 こんにちは chanyou です。 先日、 datatech-jp の Data Contract事例共有会 というイベントに登壇させていただきました。 Data Contract の導入の難しさを語り合う貴重な機会でした。 イベントではそこまで触れていなかったですが Data Contract CLI というオープンソースのツールがあります。 Data Contract CLI を使うことで、Data Contract の YAML ファイルの読み書きやカタログ生成が容易に行えます。 Data Contract CLI の実装を読む機会がありましたので、この記事で触れていきたいと思います。 Data Contract CLI とは? ドキュメントは以下から確認できます。 https://cli.datacontract.com ソースコードは以下で、MIT ライセンスで公開されています。 datacontract/datacontract-cli - GitHub Data Contract CLI の基本的な使い方 インストール pip でインストールできます。 pip install 'datacontract-cli' 依存関係が切り出されており、使いたい機能に応じて追加モジュールをインストールできます。 pip install datacontract-cli[bigquery] インストールすると datacontract コマンドが使えるようになっています。 $ datacontract Usage: datacontract [OPTIONS] COMMAND [ARGS]... The datacontract CLI is an open source command-line tool for working with Data Contracts (https://datacontract.com). It uses data contract YAML files to lint the data contract, connect to data sources and execute schema and quality tests, detect breaking changes, and export to different formats. ╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ --version Prints the current version. │ │ --help Show this message and exit. │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ init Download a datacontract.yaml template and write it to file. │ │ lint Validate that the datacontract.yaml is correctly formatted. │ │ test Run schema and quality tests on configured servers. │ │ export Convert data contract to a specific format. Saves to file specified by `output` option if present, otherwise prints to stdout. │ │ import Create a data contract from the given source location. Saves to file specified by `output` option if present, otherwise prints to stdout. │ │ publish Publish the data contract to the Data Mesh Manager. │ │ catalog Create an html catalog of data contracts. │ │ breaking Identifies breaking changes between data contracts. Prints to stdout. │ │ changelog Generate a changelog between data contracts. Prints to stdout. │ │ diff PLACEHOLDER. Currently works as 'changelog' does. │ │ serve Start the datacontract web server. │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ できることは出力の通りですが、一通り触ってみましょう。 ...

December 20, 2024 · 7 min · chanyou

connpass API ではじめるデータ分析基盤入門

これは 呉高専 Advent Calendar 2022 - Adventar の14日目の記事です。 大遅刻、大変失礼しました… しっかり埋まっていてすごい。そしてアルゴリズムからハードウェアまで、カバー域広い… 改めて、アドベントカレンダーを通して知らない人とつながれるのでとてもいい文化だなと思ってます。 まえがき 2022年の6月にオープンセミナー2022@広島に「データ分析基盤のはじめかた」というタイトルで登壇させていただきました。 データ分析基盤の構成要素など考え方を中心の内容で、最後にデモを行いました。 セミナーでは実装の詳細に触れることができなかったので、この記事では connpass API をデータソースとしてデータ分析基盤を作って動かす方法を紹介したいと思います。1 この記事を通して、データ分析基盤をもっと身近に感じてもらえると願ったり叶ったりです。 対象読者 データ分析基盤構築の一連の流れが知りたい方 普段は構築済みのデータ分析基盤を使っていて、その実装に興味のある方 デモ こちらにリポジトリを公開しています。 clone して docker-compose build && docker-compose up で動くはずです。気長に待ちながら続きを読んでもらえるとこの上ないです。 データ分析基盤の構成要素 実際に動かす前に、データ分析基盤の構成要素について触れておきます。 基本的な構成要素 データ分析基盤は、基本的には以下の要素で構成されます。 それぞれ、以下のような位置づけになります。 要素名 内容 具体例 データソース データの供給元 Google Analytics の生データやセンサーデータなど データレイク データソースから受け取った生のデータを保存するストレージ S3 や Cloud Storage などのオブジェクトストレージが選定されることが多いです データウェアハウス データレイクの生データを、分析が容易な構造化データとして保存するストレージ BigQuery や Redshift、Snowflake などが選定されることが多いです データマート データを利用しやすいように、データウェアハウス内の構造化データをさらに加工したもの 実体としては、ストレージは基本的にデータウェアハウスと同一になるはずで、データウェアハウス内の一部のビューやテーブルを指してデータマートと呼ぶようになります2 データ活用 データの活用先 機械学習モデルやその実装に利用する Jupyter Notebook、BI ツールなどがこれに当たります データパイプライン 上画像の矢印の部分。データ抽出や変換、ローディングなどを行う役割です fluentd や Embulk、 Airbyte や dbt などの SaaS や OSS がよく挙げられますが、FaaS ベースの独自のスクリプトもデータパイプラインと言えます 具体例としてオブジェクトストレージや列指向データベースなどを挙げていますが、あくまで選定される場合が多いものであって、例えば データレイクにはオブジェクトストレージしか採用してはいけない といったことは全くないです。 ...

December 14, 2022 · 4 min · chanyou