Google Cloud Professional Data Engineer 学習メモ
今月末にPDEの試験を控えているのでその勉強メモです。随時追加していきます。
データストレージプロダクト

Cloud Storage
- ライフサイクル ルールには、次のアクションのいずれか 1 つのみを指定する。
- Delete
- SetStorageClass
- AbortIncompleteMultipartUpload: 未完了のマルチパートアップロードを削除する。
- マルチパートアップロード
- ファイルを分割してアップロードし、最終リクエストを使用して単一のオブジェクトにまとめる
- マルチパートアップロード
- ターボレプリケーション
- データ暗号化
- Google 管理の暗号鍵(デフォルトの暗号化)
- 顧客管理の暗号鍵(CMEK)
- 暗号鍵は Cloud Key Management Service を使用して作成し、管理
- 顧客指定の暗号鍵(CSEK)
- 独自の暗号鍵を作成し、管理
- 保持ポリシー
- バケット内のオブジェクト(データ)が削除または上書きされないように保護するためのルール
- 保持ポリシーを設定すると、指定した期間内はオブジェクトの削除や上書きが禁止され、データの損失や誤操作を防ぐことができる
BigQuery
- バックアップ
- 7日以内であれば復元可能
- GCSに保存
- Insert方法
- アクセスコントロール
- クラスタリング
- 特定の列の値に基づいてテーブルのデータをソート・内部的に近い位置に配置しすることでフィルタや集計のクエリを高速化する機能
- クラスタ化に指定する列は、一意の値を大量に含む (カーディナリティの高い) 列が推奨される
- パーティション
- 1つのテーブルを、特定の列の値を基準にして分割する機能
- 分割基準として使う列をテーブル作成時に指定することで、パーティション分割されたテーブルを作成することができる
- 大幅にスキャン範囲を節約でき、料金と時間の節約になる

BigQueryのパーティションとクラスタリングについての解説 - G-gen Tech Blog
- Analytics Hub
- 組織の境界を越えてデータと分析情報を大規模に共有できるデータ交換プラットフォーム
- ユースケース
- 組織内の部門間でデータを共有する。
- 組織外のパートナー企業とデータを共有する。
- ユースケース
- 組織の境界を越えてデータと分析情報を大規模に共有できるデータ交換プラットフォーム
- 地理空間分析: BigQuery の GIS 機能により、位置情報を含むデータ分析が可能
- BI Engine
- Looker Studio などの BI ツールなどから頻繁にアクセスされるデータをインメモリとして保存することで、クエリを高速化したい場合に使用するサービス
- マテリアライズドビュー
- 実体テーブルとビューの中間のようなテーブルであり、クエリ結果を事前に実体テーブルとして保存することでキャッシュのような役割を果たすことができます。これにより、クエリを高速化できます。また、元テーブルのデータが変更されると、マテリアライズドビューも自動的に更新されます
- 料金
- エディション
- アドホックな分析を目的としており、ユーザーのスキャンした容量に応じて課金したい時はこっち
- オンデマンド
- ジョブの使用スロット数がある程度一定で、時折増加するものの上限の予測ができる場合はこっち
- エディション
- BigQueryの外部データに対してクエリを実行する
- 暗号化
- Google 管理の暗号鍵(デフォルトの暗号化)
- 顧客管理の暗号鍵(CMEK)
- Cloud KMS Autokey
- MEK の作成・使用を簡素化し、鍵生成やサービスアカウント作成を自動化することで鍵管理が容易になる
- 暗号化関数
- BigQuery テーブル内の個々の値を暗号化する場合は、認証付き暗号(AEAD)の暗号化関数を使用することができる
- クライアントサイド暗号化
- ユーザーがデータを暗号化してから BigQuery に書き込む方法。
- 事前にユーザー側で暗号した後、さらに Google 管理の暗号鍵にて暗号化されるため、二重の暗号化となる
BigTable
- NoSQL データベース
- センサーデータなどの時系列データの保存にも適している
- ナローテーブルの仕様が推奨されている
- 行数が多く(背が高く)カラム数の少ない(幅の狭い)テーブル
- 1 行に 1 つのイベントを格納することで、データに対するクエリの実行が容易になる
- 永続ストレージ
- 永続ストレージとしてSSDとHDDのどちらにするかを指定する
- Key Visualizer
- バックアップ
- 標準バックアップ
- 長期保持用に最適
- ホット バックアップ
- 本番環境レベルのパフォーマンスと低レイテンシのサービングへの最も効率的な復元を提供する
- 標準バックアップ
Firestore
- NoSQL ドキュメント データベース
- Json形式で保存
- 大規模な構造化データに対して可用性の高いアクセスを必要とするアプリケーションに最適
Spanner

- インターリーブ
- 親子関係にあるデータを物理的に同じ場所に配置でき、クエリ性能を向上させることができる
- 2つのテーブルをJOINするクエリで、複数のサーバにアクセスする必要があり、クエリのパフォーマンスに影響を与える可能性があるときに使える
- Spanner Data Boost
Memorystore
- Memorystore for Redis: 色々な種類のデータを扱えて、多機能なインメモリデータストアサービス。
- Memorystore for Valkey: Redisをさらに高速・高性能にした、大量のアクセスにも強い。
- Memorystore for Memcached: シンプルで超高速な、ウェブサイトの高速化に特化。
データ変換・加工・パイプラインの構築
Cloud Composer
- その前に、、Apache Airflowとは
- データパイプライン用のワークフロー管理ツール
- Airflow は様々なツールやサービスと連携し、ETL 処理を実行することが可能
- Airflow においては、個々の処理 (Task)の順番や依存関係を DAG (Directed Acyclic Graph) というもので定義する
- Pythonで記述
- バッチ形式のワークフローに特化
- Cloud Composerとは
- On_failure_callback
- DAG (Directed Acyclic Graph) の実行が失敗した場合に呼び出されるコールバック関数
- このコールバック関数を使用することで、DAG の失敗時に特定のアクションを実行できる
- タスクが失敗した場合に通知を受け取りたいときに使える
Apache Beam
一回quickスタートをやって見るのがおすすめ。
https://cloud.google.com/dataflow/docs/quickstarts/create-pipeline-go?hl=ja
- Apache Beamとは
- データ処理を簡潔かつ効率的に行うためのオープンソースのプログラミングモデル
- Side inputs
- 通常の入力(主入力)の PCollection に加えて、追加の入力(副入力)を Transform に渡すことができる機能。
- パイプライン (Pipeline): データの処理の流れ全体を定義するもの。
- PCollection: Beamで扱うデータの集合を表す。順序付けられていない可能性があり、並列処理に適している。
- 変換 (Transform): PCollectionに対して行う処理の単位。
- ParDo: PCollectionの各要素に対して、ユーザーが定義した処理を並行して行うための変換
- DoFn (Do Function): ParDo変換の中で、PCollectionの各要素に対して実行されるユーザー定義の関数。
- Runner: Beamパイプラインを実際に実行する環境のこと。ローカル環境で実行するDirect Runnerや、Google Cloud Dataflow、Apache Flinkなどがある。

Dataflow
- Dataflowとは
- パイプラインの停止
- ジョブをキャンセル
- ストリーミング パイプラインとバッチ パイプラインの両方を停止
- ジョブをドレイン
- ストリーミング パイプラインのみ停止
- バッファ内のデータの処理を完了すると同時に、新しいデータの取り込みを中止する
- ジョブをキャンセル
- ウィンドウ関数
- ウォーターマーク
- 「ある時点までに、それより前のデータはほぼすべて到着した」と Dataflow が判断するための基準となるタイムスタンプ
- ウォーターマークを設定することで、ある程度遅れてくるデータは許容しつつ、適切なタイミングでウィンドウを閉じ、結果を出力することができ
Dataprep
- ノーコードで分析、レポート、機械学習に使用する構造化データと非構造化データを視覚的に探索、クリーニングを行うことができるサービス
- Dataprepの内部ではDataflowやBigQueryが使用されている
Data Fusion
- データ統合サービス
- ノーコードで視覚的に様々なデータソースからデータを収集、変換、統合し、分析基盤にロードするパイプラインを構築可能
- Wrangler
- データの前処理や変換を効率的に行うための強力なツール
- Cloud Data Fusion と組み合わせて使用することで、データ分析基盤の構築を加速できます。
柔軟性
(制限あり・コスト低)Dataprep - Data Fusion - Dataflow (より柔軟・コスト高)
Dataproc
- ビッグデータ分析によく使われる、HadoopやSparkといった複雑なシステムを、Google Cloud上で簡単に構築・運用できるサービス
- Hadoopとは
- 大規模なデータの分散処理と保存に特化したフレームワーク
- テキストデータや画像データなど、様々な形式のデータを大量に保管し、分析するのに適している
- Spark
DataForm
- SQL を使用して BigQuery でスケーラブルなデータ変換パイプラインを開発、管理、実行する
- アサーション
- データの品質を検証するためのルールまたは条件のこと
- アサーションを使用することで、データが期待される状態に準拠しているかどうかをテストできる
データ管理
Cloud Data Loss Prevention
- 事実上どこからでもデータをスキャン、発見、分類、レポートする力を提供
- PII(個人識別情報)の漏洩を防止する際に役立つ
Dataplex
- データレイクの構築・管理分析を簡単に行うためのツール
- 複数のクラウドプロジェクトやリージョンにまたがるデータの管理、セキュリティ、ガバナンスを統合し、データのサイロ化を解消が可能
- データの集合体は大きい単位から Lake/Zone/Assetと呼ばれる
- AssetはDatasetまたはGCSのBucektと1:1
Zoneには複数のAssetを入れることができ
Lakeには複数のZoneを入れることが出来る。 -

- Lake/Zone/Assetは異なるProjectにまたがることができる。
- Lekeを作れば権限管理がめっちゃ楽になる
- AssetはDatasetまたはGCSのBucektと1:1
- 作成したLake/Zone/AssetのメタデータはData Catalog上に自動的に保存され、検索から探すことが可能
Data Catalog
- 組織全体のデータをカタログ化し、検索・発見を容易にするツール
Workflows
DLP
機械学習
- 過学習(過剰適合)
- 訓練データを学習し過ぎた結果、その訓練データに過剰に適合しすぎてしまい、未知データ(テストデータ)に対しては適合できていない(汎用性がなくなった)状態のこと
- 過学習を軽減するには
- 交差検証
- 主成分分析(PCA)
- 分類と回帰
- 分類:離散値(クラス)を予測する
- 例)データが犬 or 猫のどちらかを予測する
- 線形回帰
- 回帰:回帰は連続値(数値)を予測
- 例)部屋の広さから家賃を予測したり、過去の広告費用からクリック数を予測する
- 特徴量エンジニアリング
- データから適切な特徴量を抽出し、加工するプロセス
- BigQuery やDataflowを使用して実行可能
-

- 分類:離散値(クラス)を予測する
- BigQuery ML
- AutoML
- TensorFlow
- AI Notebooks
-
Dialogflow
- Dialogflowとは
- ユーザーの発言例をいくつか提示すると、Dialogflowが独自のモデルを構築し、どのようなアクションを起こすべきか、どのようなデータを抽出すべきかを学習し、ユーザーに最も適切で的確な応答を提供することができる
- Dialogflow Enterprise Edition
- Dialogfowをよりバージョンアップさせたもの
- Dialogflowとは
データ取り込みプロダクト

-
Storage Transfer Service
-
クラウド間やオンプレミスからのデータ移行に特化している
-
トリガーとして、スケジューリング転送とイベントドリブン転送がサポートされている
-
イベントドリブン転送:ファイルが追加OR更新されたら転送
-
-
転送速度(秒間クエリ数:QPS)に上限が設定されているため、上限を回避するには大規模な転送を複数の転送ジョブに分割する。
-
分割の際は、 包含接頭辞と除外接頭辞を使用して、対象ファイル数の少ない転送ジョブを作成する
-
-
BigQuery Data Transfer Service
-
あらかじめ設定されたスケジュールに基づいて BigQuery へのデータの移行を自動化するマネージド サービス
-
SaaSデータの自動取り込みに最適
-
増分転送と切り捨て転送
-
増分転送:新しいデータの増分のみを転送する
-
切り捨て転送:全データを転送する
-
増分転送を使用することで、コストと時間を削減できる
-
-
バックフィル実行
-
特定の過去の期間のデータを BigQuery に取り込むことができる
-
-
実行通知
-
メール通知(転送失敗時)または Pub/Sub 通知(転送成功または失敗時)による実行通知が可能
-
-
-
Transfer Appliance
-
datastream
-
CDC機能・レプリケーションを備えたサービス
-
CDC(Change Data Capture)
-
データベースに発生した変更(INSERT、UPDATE、DELETEなど)をリアルタイムで記録し、追跡する手法
-
-
-
Dataflowとの統合
-
シンクへのデータ格納前にデータを変換したり、論理主キー設定などが必要な場合は、Datastream と Dataflow を統合することで実現可能

https://cloud.google.com/datastream/docs/implementing-datastream-dataflow-analytics?hl=ja
-
-
-
Database Migration Service
-
Google CloudへDBを移行するサービス
-
-
Pub/Sub
-
任意アプリケーション間のメッセージ送受信
-
Exactly-Once 配信
-
デフォルトで At Least Once(最低でも 1 回)配信を保証している。これに対して、メッセージを正確に 1 回だけ配信することを保証したい場合は、Exactly-Once 配信を設定することで対応可能
-
-
デッドレター トピック
-
Apach Kafka からの移行
-
Dataflow と組み合わせて、ストリーミングパイプラインを構築する際にもよく利用される
-
Google Cloudの対話型シェルを使ってみた
参考にしたのはこれ
gcloud 対話型シェルの使用 | Google Cloud CLI のドキュメント
インストールができたらインタラクティブモードにすることで対話型シェルを有効にできる
gcloud beta interactive
対話型シェルタイプを終了するには Ctrl-D または F9 を押します。
ブログ開設
会社の同期におすすめされてブログを作成してみた。書き方や使い方が全くわからないので、日々の日記を描きながらブログの使い方を学んでいきたい。


