Data Quality Fundamentals読んだ

learning.oreilly.com

tl;dr

  • データの品質「Data Quality」をテーマにした本だよ
  • Qualityが低いとなぜ困るのか、どんな方法・ツール・メトリクス・コミュニケーションでQuality向上できるかの説明があるよ
  • 個々のツールの説明は多くはないよ
  • Qualityを向上させるロードマップの検討・提案・説得などに使えそう(Quality低いとこれだけ困ります、こんな方法があります等)
    • 逆に個々のパイプライン・テーブルのQuality向上には、読む時間・コストに見合うか微妙かも(具体的なツールのドキュメント読んで実装した方が良い気もします)

なんで読んだの

最近、データパイプラインの品質管理・監視(Data Testing、Data Monitoring、Data Qualityとか呼ばれる領域)に興味があり、Great Expectations試したりしてました。

2022/9に出版されたこの本は、データパイプラインの品質管理・監視にフォーカスした珍しい本なので、読んでみました。

そもそもData Qualityなんやねん

この本では、Data Qualityを

For the purpose of this book, we define data quality as the health of data at any stage in its life cycle. Data quality can be impacted at any stage of the data pipeline, before ingestion, in production, or even during analysis.

と定義しています。

「health of data」という用語が曖昧さがあります(QualityをHealthに言い換えただけでは)が、別の「Data Downtime」という概念の説明で使われている、「missing, inaccurate, or otherwise erroneous」が「health of data」の意図するところでしょうか。

Data downtime refers to periods of time where data is missing, inaccurate, or otherwise erroneous, and it manifests in stale dashboards, inaccurate reports, and even poor decision making.

この本で紹介されていること

  • Data Qualityの大切さ
    • Webサービスに例えて(昔はダウン気にしてなかったが普及にしたがって、ダウンの監視や改善が重要になった)、データのダウン「Data Downtime」のインパクトで大切さを説明
  • コストインパクトの計算方法
  • Building blocks
    • DataLake、DWH、Data Catalog
  • 収集->変換->Cleaning->テストの流れ
    • Cleaningは外れ値・欠損値の対応や、型の変換などです
  • テスト・モニタリング
    • 典型的なテスト項目(データ量、NULL、分布、一意性、不変性(利益が収益-コストになってるとか))
    • dbt、Great Expectations、Deequのメリット・デメリット、簡単なコード例
    • Airflowでの例(SQLCheckOperator、「Circuit Breaker」(データ品質が期待以下の場合DAGを失敗させる))
  • 異常検知
    • テストだけだと「Unknown unknown」に対応できない
    • SQL+惑星データでデータの分布を可視化して、異常値検知
  • Data Quality
  • Data Incidentの対応の例
  • データリネージュのメリット、例、ケーススタディ(FOX Network)
  • 「Data as Product」
    • 概念の説明
    • 関係者との調整
    • Data Discovery・Catalog大事だよ
    • Case Study(Toastの例)
  • 「Data Mesh」
  • 将来の展望(よりプロアクティブ、自動化、分散)

この本で(あまり)紹介されていないこと

  • 機械学習のモデルのQuality(学習した後に劣化するとかの話)
  • 個別のツール・サービスの(詳しい)話
    • この本の著者はMonte Carlo(Data QualityのSaaS)の人ですが、特にMonte Carloの説明はありません
    • Deequ、dbt、Great Expectations、Airflowについては、少し説明があります
  • 「Data」でないQuality(ソフトウェアのテスト等)

他の本

(Early Releaseの本も含めると)最近Data Quality系の本がいくつか出版されているようです。

learning.oreilly.com

learning.oreilly.com

learning.oreilly.com

Data Engineering with Apache Spark, Delta Lake, and Lakehouse読んだ

learning.oreilly.com

tl;dr

  • LakeHouseアーキテクチャの本だよ

  • 全体像を知るのは良いかも。個々の技術(Spark、DeltaLake、Azure)はそこまで詳しい記載はないよ

なんで読んだの

LakeHouseやDeltaLakeという単語聞いたことありますが、よく知らないなーというのがありました。

O'Reillyのサブスク(Safari)でこの本を見つけて、流行り言葉だし知っておこうかという事で読みました。

この本で紹介されていること

  • データエンジニアリングの概要
    • データの種類とか利用の例とか
  • アーキテクチャ
    • 従来(DataLake、Lambda、Kappa)の概要
    • LakeHouse Architecture
  • Azureのデータエンジニアリング関係のサービスの概要
  • データパイプライン
    • 構成要素(入力、変換、出力、Workflow、監視)
    • 作成のフェーズ(Discovery、Design、Development、Deployment)
  • LakeHouseのレイヤー(Bronze、Silver、Gold)毎のハンズオン
    • SQLServerからData Factory使ってAzure Blob Storageへの書き込み(Brozne)
    • Azure Blob StorageからDeltaLake・Databricks使って、データの標準化(Silver)
  • 開発後の話
    • IaC
    • CI/CD
    • Monitoring
  • データエンジニアリングのチャレンジ(難問のニュアンス?)
    • Schema Evolution
    • データ共有
    • データガバナンス(カタログ)

この本では(あまり)紹介されていないこと

  • Azureのデータ関連サービスの記載ありますが、さらっとした記載です。あくまでこの本のハンズオンを行うための記載と割り切った方が良さそうです
    • (というかハンズオンを理解するのも怪しいかも)
    • データに関係ないAzureサービスの説明は、なおのことありません
  • DeltaLakeの説明はありますが、機能(タイムトラベル、トランザクション)の説明のみで、仕組みの話や同じカテゴリーの製品(e.g. Hudi、Iceberg)の比較はほぼありません
    • 私はここらへんを知りたかったので残念

その他

  • ハンズオンに通貨両替のAPI使いますが、対象APIの無料公開が停止しているようです。ただし、APIなくても大半のハンズオンは実行できます
  • ハンズオンでリソース名を指定する箇所がありますが、Azureのリソースのいくつかはグローバルでユニークである必要があるらしく、そのままでは動きません。何箇所か名前を変えて実行する必要があります
  • DataFactoryのハンズオン辛い…GUIツールはコピペができないのが辛いですね

今月読んだ本(2022/8)

 

読み終わった

booklog.jp

読んでまとめました。特に技術選定の部分が勉強になりました。

not-rogue.hatenablog.com

 

booklog.jp二回目。Goで写経中。

 

 

booklog.jp

そういえばDjangoあまり知らないなーというので読みました。

 

booklog.jp

クライアントの通りにしているだけでは訴えられる可能性があるので、プロとして頑張りましょうという話が多いですかね。

 

booklog.jpいわゆるミクロネーション(自称独立国家)の話が多いですが、傀儡国家や

モレネみたいな都市国家的な何かなどが雑多に記載されています。

 

booklog.jp

booklog.jp

 

booklog.jp

 

 

読んでる

 

booklog.jp

Fundamentals of Data Engineering読んだ

https://learning.oreilly.com/covers/urn:orm:book:9781098108298/400w/

 

 

learning.oreilly.comFundamentals of Data Engineeringという本を読みました。

どんな本か

2022年に出版された、名前の通りData Engineering入門の本です。具体的には、

  •  データの流れ(後述のData Engineering Lifecycle)に沿った、仕事・ベストプラクティスの説明
  • データ基盤のアーキテクチャを考える時の観点
  • 技術選定する時の観点
  • 他の職種の人とのかかわり
  • データウェアハウスのデータモデリングの概要
  • 流行り言葉の説明

などが説明されています。

 

構成は、

  • 一部はData Engineeringの一般論(定義や歴史)、全体的なアーキテクチャ・技術の選び方
  • 二部はデータの流れ(後述のData Engineering Lifecycle)に沿った、仕事・ベストプラクティスの説明
  • 三部はセキュリティと、Data Engineeringの未来
    • (一部にまとめられたのでは?と思わなくもないです)

の三構成からなっています。特に一部のアーキテクチャ・技術選定の章(3、4章)が私には印象に残っています。

 

なお、著者のお二人はTernary Dataというコンサルタント会社の方です

 

どんな本ではない

基本的に特定・具体的なツール・製品の話には踏み込みません。例えば、一般論としてのData warehouseの説明はありますが、具体的な製品(例えば、SnowflakeやBigQuery)は名前の紹介に留まります。

そのため、この本を読んでもデータ基盤を作ったり使えるようにはなりません。

(それらのツール・製品の理解はしやすくなるでしょうが)

 

また、Data EngineeringはData Science・Machine Learningの隣接分野ですが(かつ一部オーバーラップや混同される分野)、その説明はほとんどありません。

 

Data Engineering Lifecylecyle

この本では「Data Engineering Lifecycle」という概念を紹介しており、本文中(特に二章)では、それに沿って話が進みます。

 

Data Engineering Lifecyleは本文中では

The data engineering lifecycle comprises stages that turn raw data ingredients into a useful end product, ready for consumption by analysts, data scientists, ML engineers, and others

と定義されています。元データをエンドユーザ(データサイエンティスト等)が利用できるようにするまでの一連の流れで、

  • 元データの生成(Generation)
  • 挿入(Ingestion)
  • 変換(Transformation)
  • 提供(Seving)
  • 保存(Storage)

をライフサイクルとしています。

 

また、「undercurrent」(適当な訳が難しい…)として、

  • セキュリティ
  • Data Management
  • DataOps
  • Data Architecture
  • Orchestration
  • Software Engineering

など、データエンジニアリングを支える横断的な考えについて、都度説明があります。

 

アーキテクチャ・技術の選び方

3、4章のアーキテクチャ・技術選定の章が特に印象に残っています。

本書では色々書いていますが、

  • 要件ちゃんと考えろ

というのが核で、

  • 過度に複雑にするな
  • 新しいってだけで技術を選ぶな
  • 将来変わりうる所はフレキシブル・スケールする

などが、よく陥る罠に対する注意点なのかなーと思いました。

 

技術選定関係で印象に残った言葉

データエンジニアリングの領域は新しいツールやバズワードが多いので、その警鐘が多い気がします。

 

focus on the fundamentals to understand what’s not going to change;

t-wadaさんの技術の審美眼にも似た話あったなーと思い出しました(t-wadaさんの方は変わった部分は変わる要因に注目しようという話だと思いますが)。

 

speakerdeck.com

Enterprise architecture is the design of systems to support change in the enterprise, achieved by flexible and reversible decisions reached through careful evaluation of trade-offs.

reversible(後からやり直せる)な決定はflexibleな決定に繋がり(やり直せる分柔軟に試せる・戻せる)、flexibleな決定は環境の変化に追随しやすいので良いと繋がります。

 

There’s also a temptation to do resume-driven development, stacking up impressive new technologies without prioritizing the project’s ultimate goals

 We sometimes see small data teams read blog posts about a new cutting-edge technology at a giant tech company and then try to emulate these same extremely complex technologies and practices. 

You are not Dropbox, nor are you Cloudflare

新しい・他が使っている・履歴書に書けるような技術というだけで、あるテクノロジーを選ぶなという警告です。耳が痛いです。

(最後の引用は、DropBoxやCloudflare(の一部)はオンプレに戻ったというだけで、クラウドディスるなという話)

 

We see such apples-to-oranges comparisons made all the time in the database space.

データベース製品の比較の文脈です。SnowflakeとDatabricksがベンチマークで喧嘩していたり(下)、ベンチマーク見るの難しいですよね。

www.databricks.com

www.snowflake.com

 

Future work的な

この本を読んだ印象では、著者は

  • ストリーミング
  • 「Enterprisey」(大企業っぽい分野というニュアンス?)。具体的には、データマネージメント等?
  • データの品質管理

の分野が、未発達・これから伸びると踏んでいるようです。

 

他の人の感想

 

Amazon(.com)だと評判良くて結構売れているようです

Amazon.comのランキング高い

O'reillyのSafariでも評判良さげです

 

 

 

日本の方ですとtoosh2230さんが感想をまとめてくださっています。

ts223.hatenablog.com

 

 

 

 

今月読んだ本(2022/7)

よみおわった

最近Go言語に入門しています。その流れで並行処理の本を読みました。

booklog.jp

図書館で見つけて、タイトルに惹かれました。「絶望島」とか「世界の終わり」みたいな変わった地名(および、そんな地名をつけるた経緯や環境)の説明の本です。

booklog.jp

タモリ倶楽部枠。

booklog.jp4年間くらい積ん読していた本。一度でわかった気がしないので、必要に応じて読み治す必要あり。

booklog.jp

 

よんでいる

すき。後でまとめる。

booklog.jp

みんな大好きワインバーグ先生。テストの手法(境界値とか)より抽象的な、なんでテストすんのとか、人の話とか。

booklog.jp

 

最近、国立西洋美術館いったので。

booklog.jp

猫と和解せよ。

booklog.jp

Robust Python読んだ

learning.oreilly.com

Robust Pythonという本を読みました。

どんな本か

You’ll journey through numerous ways to make Python clean and maintainable.

とあるように、Pythonでキレイでメンテしやすいコード書こうという本です。

なお、

This is not intended to be your first Python text

Pythonを初めて学ぶための本ではなく、基本的な構文(ループとか)の説明はありません。

扱う話題は、

  • 型ヒント
    • 入門、Collection、Typecheckerのカスタマイズ、導入戦略
  • 型定義
    • Enum、dataclass、継承、duck typing、Protocol、pydantic
  • 拡張しやすい実装の話
  • セーフティーネット」の話
    • 静的解析(pylint、dodgyによる機密情報ベタ書きの検知、banditによるセキュリティの確認)
    • テスト(pytest、behaveによるBDD、HypothesisによるProperty-based testing、mutmutによるMutation esting)

などがあります。

なお、2021年に出版された本で、邦訳は(今のところ)ありません。

他の本

邦訳されている本に限っても、「Python初心者の一歩先」似たティストの本は激戦区で、

あたりが競合になりそうです。

これらの本と比べたRobust Pythonの特徴ですが、

  • 他の本と比べて「Robust」の話題に特化。「Robust」に関係薄い話題は含まれない
    • 具体的には、C言語による拡張や、ジェネレータ・イテレータ、並行・並列プログラミング、パッケージの作成
  • 他の本と比べて比較的新しい
    • Robust Pythonは2021年
    • エキスパートPythonプログラミングは原著(4版)が2021年、邦訳(3版)は2019年
    • Fluent Pythonは2015年(2版は準備中)
    • Pythonハッカーガイドブックは邦訳2020年、原著は2018年
  • 厚さ的には(比較的)薄め

また、この本のテーマである「Robust」なコードに関しては

  • リーダブルコード
  • プログラミング作法

あたりと多少被りそうですが、Robust Pythonは良くも悪くもPython特化な点が差別化ポイントになりそうです。

Robust Pythonが扱っていない(そして他の本では扱っている)話題も多いので、Python始めた人に「二冊目」の本として読むのは微妙な気がします。

単に動くコードを超えて、メンテしやすいコードを書くための「三冊目」として読む・薦めるのが良いかもしれません。

その他

「きれいなコードとはなにか」「なぜきれいなコードが必要か」を扱う章があります。

その中で、「コードは非同期コミュニケーションだから意図を込めて、意図をわかるように書け」みたいな記載がお気に入りです。

Expert Python Programming(4版)読んだ

tl;dr

  • Expert Python Programmingの4版が英語だと出ているよ
  • mutation testingとか分散トレーシングとかナウい話が追加されてるよ
  • 一部削除された話もあるよ
    • ドキュメント、良い名前の付け方

Expert Python Programming(エキスパートPython)とは

英語版の説明ページいわく

Complete with best practices, useful tools, and standards implemented by professional Python developers, this fourth edition has been extensively updated. Become familiar with the latest Python improvements, syntax elements, and interesting tools to boost your development efficiency.

日本語版の説明ページいわく

本書は、Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。本書を読むことで、先進的なPythonプログラマが日常的に使用している開発ノウハウを学ぶことができます。

要するに、言語そのものだけでなく、プラクティスやツールも紹介してくれるクールな本です。

版の歴史

英語 O'reillyのSafari経由のサブスクリプションで読めます。

  • 2008年に1版
  • 2016年に2版
  • 2019年に3版
  • 2021年に4版

日本語版

なお、私は日本語版の2版を昔読みました。3版は読んでないです(違いの確認は目次とO'reilly safariでの流し読み)。

過去の版との違い

以下の章が増えてる・他の章から独立した章になっています。

  • 「New Things in Python」(3章)
    • 3.8, 3.9で追加された機能の紹介の章です
    • assignment expression とかtype hintingの拡張、新しい標準ライブラリ(zoneinfo, graphlib)
  • Python in Comparison with Other Languages」(4章)
    • 他の言語と比較しつつ、多重継承、プライベート化、duck typingあたりの紹介です
  • 「Interfaces, Patterns, and Modularity」(5章)
    • 抽象クラス(ABC)、Inversion of Controlあたりの紹介です
  • 「Observing Application Behavior and Performance」(12章)
    • ログ、モニタリング(Sentry)、メトリクス(Prometheus)、分散トレーシング(Jaeger)の章です

一方、2版・3版から削除されている章もあります。章を削除した意図は特に書いていない?と思います。

  • 「良い名前を選ぶ」
    • PEP8とか変数名・クラス名の章
  • 「構文ベストプラクティス クラス以外」
  • 「構文ベストプラクティス: クラスの世界」
  • 「コードをデプロイする」
  • 「コードの管理」
    • GitとかCI/CDの章
  • 「プロジェクトのドキュメント作成」
    • 技術文書とかreStrcuturedTextの章
    • (reStrcuturedTextは3版では独立した章に)
  • Pythonのためのデザインパターン

なお、削除された章の一部は、4版では(内容・タイトルが追加・変更の上)別の章に対応する気もしています(明言はされていないです)。

  • 「構文ベストプラクティス: クラスの世界」 -> 「Python in Comparison with Other Languages」
  • Pythonのためのデザインパターン」->「Interfaces, Patterns, and Modularity」
  • 「コードをデプロイする」-> 「Observing Application Behavior and Performance」

その他増えてそうな内容(過去の版で見落としただけかも)

  • Poetry
  • mutation testing
    • コードの方を変更してテストの品質測るやつ
    • mutmutによるテストが紹介されています

(補足)2版と3版の違い

訳者の清水川さんのブログが詳しいです

  • 「イベント駆動形プログラミング」(Event-Driven Programming)の章が追加
  • 「現代的なPython開発環境」・「メタプログラミングの要素」「reStrcturedText入門」の章が他の章から分離

したのが大きな点でしょうか

www.freia.jp