Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第104回 雲勉【オンライン】Dataflowを使ってストリーミングデータパイプラインを作成してみよう

第104回 雲勉【オンライン】Dataflowを使ってストリーミングデータパイプラインを作成してみよう

nakashima

May 26, 2023
Tweet

More Decks by nakashima

Other Decks in Technology

Transcript

  1. 第104回 雲勉【オンライン】
    Dataflowを使ってストリーミングデータパイプラインを作成し
    てみよう
    2023/05/25

    View Slide

  2. 2
    • 野崎 ⾼弘(のざき たかひろ)
    • アイレット株式会社 クラウドインテグレーション事業部 プロジェクト企画推進セクション インフラ技術
    • インフラ構築・保守やSOCセキュリティアナリストをやってました
    • 現在は技術検証やドキュメント作業が主
    • 趣味︓資格取得、⽝の散歩、ドラマ鑑賞、巨⼈ファン
    • 現在、AWSは全冠、GCPは9冠
    3
    ⾃⼰紹介

    View Slide

  3. 本セッションの内容
    3
    Dataflow を使⽤してリアルタイム ダッシュボード⽤のストリーミング データ パイプラインを作成する
    ニューヨーク市のタクシー⾞両を多数所有しているものと仮定して、リアルタイムでビジネスの状況をモニ
    タリングします。
    タクシーの売り上げ、乗客数、乗⾞状況などを把握し、その結果を管理ダッシュボードで視覚化するための
    ストリーミング データ パイプラインを構築します。
    • Google Cloudのデータ分析系サービスであるPub/Sub、BigQuery、Dataflow、Looker Studioについて
    学びます。
    • 内容的には、Google Cloud Professional Cloud Data Engineer 試験の内容に近いです。
    (参考)A Streaming Data Pipeline for a Real-Time Dashboard with Google Cloud Dataflow

    View Slide

  4. 条件と対象者
    4
    条件
    • データセットを作成するには、bigquery.datasets.create IAM 権限が必要です。
    • Dataflowジョブを作成・実⾏・確認するには、roles/dataflow.admin や roles/dataflow.worker ロール
    が必要です。
    • BigQuery サブスクリプションを作成するには、Pub/Sub サービス アカウントに、特定の BigQuery
    テーブルへの書き込みと、テーブルのメタデータの読み取りを⾏う権限が必要です。
    • BigQueryでジョブ(クエリ)を発⾏するには、roles/bigquery.jobUserロールが必要です。
    • Lookerを選択・データの内容を表⽰するには、access_data 及び see_looks 権限が必要となります。同
    様に、ダッシュボードを選択・データの内容を表⽰するには、access_data 及び see_user_dashboards
    権限が必要です。
    対象者
    • 普段GCPを触っている中級者向け
    • GCPでデータ分析をしたい
    • パイプラインのストリーミングから分析、視覚化までしてみたい
    • Google Cloud Professional Cloud Data Engineer 試験の対策も兼ねたい

    View Slide

  5. 全体像
    5

    View Slide

  6. 事前知識︓ストリーミングパイプラインとは
    6
    ストリームパイプラインの具体的なデータの流れは、次のよ
    うになります。
    1. データはデータレイク(Pub/Sub)に保存されて、メッ
    セージキューを通して、データの流れ(Dataflow)が制
    御されます。
    2. エンキューされたデータは、サブスクライバーやトピック
    によってデキューされ、その後ETL処理に渡されます。
    3. ETL処理済みデータはジョブフローに乗り、それぞれが必
    要なデータストア(BigQuery)へと運ばれていきます。
    4. データストアに保存されたデータは随時、最新状態に更新
    され、APIやBatchのインプットとなったり、あるいは機
    械学習の学習時のデータセットに⽤いられたり、分析ツー
    ルのコンソールなどから直接SQLで参照されたりします。
    ⽔ ⇨ データ
    ダム ⇨ データレイク
    導⽔施設 ⇨ メッセージキュー
    浄化 ⇨ ETL処理
    配⽔池 ⇨ データストア
    配⽔管 ⇨ ジョブフロー
    蛇⼝ ⇨ API、Batch、分析ツール
    IUUQTDEOBLGTUIBUFOBDPNJNBHFTGPUPMJGFMMPOHHJG

    View Slide

  7. 事前知識︓Pub/Sub
    7
    Pub/Subとは、メッセージを⽣成するサービスを、それらのメッセージを処理するサービスと切り離す、⾮
    同期のスケーラブルなグローバルメッセージングサービスです。
    • トピックと呼ばれる共有⽂字列を使⽤して、イベントプロデューサー(パブリッシャー)とコンシュー
    マー(サブスクライバー)が相互に接続。パブリッシャーによってメッセージが作成されてトピックに送
    信され、サブスクライバーによってトピックに対するサブスクリプションが作成されてメッセージ受信
    • 送信者と受信者を分離することにより、独⽴して作成されたアプリケーション間で、⾼可⽤性が確保され
    た通信が可能
    • レイテンシが短く(100ミリ秒程度)、耐久性に優れたメッセージングを実現
    • データを取り込んで配布するためのストリーミング分析と、データ統合パイプラインに使⽤される
    〔⼀般的なユースケース〕
    • ユーザー操作の取り込みとサーバーイベント
    • リアルタイムのイベント配信
    • アプリケーション、サービス、IoTデバイスからのデータストリーミング

    View Slide

  8. 事前知識︓Dataflow①
    8
    Dataflowとは、⾃動スケーリングとバッチ処理を介して、レイテンシ、処理時間、コストを最⼩限に抑える
    フルマネージド ストリーミング分析サービスです。
    • ⼤枠ではHadoop、Sparkとかの仲間と考えればよい
    • イベントストリームの取り込み・処理・分析をリアルタイムで⾏う
    • サーバーレスかつレイテンシを抑えた⾼速
    • 統合されたストリームデータ処理とバッチデータ処理
    • 信頼性の⾼い⼀貫した1回限りの処理
    • リソースの⾃動スケーリングと動的作業再調整
    • Apache Beam とは、バッチとストリーミングの両⽅のデータの
    並列処理パイプラインを定義するオープンソースの統合モデルです。
    Apache Beam SDK を使⽤して、パイプラインを定義するプログラ
    ムを構築します。次いで、Dataflow などの Apache Beamがサポ
    ートする分散処理バックエンドの1つがパイプラインを実⾏します。

    View Slide

  9. 事前知識︓Dataflow②
    9
    Dataflowテンプレートというジョブの処理内容を定義し
    たものをあらかじめ登録しておき、テンプレートを指定
    してジョブの実⾏を⾏います。
    例えば、「Pub/Sub Topic to BigQuery」テンプレート
    は、Pub/SubトピックからJSON形式のメッセージを読
    み取り、それらをBigQueryテーブルに書き込むスト
    リーミングパイプラインです。
    ⾃動スケーリングのジョブを実⾏するために必要なワー
    カーインスタンスの数を⾃動的に選択します。ワーカー
    インスタンス数は、ジョブの要件に応じて時間とともに
    変化する可能性があります。

    View Slide

  10. 事前知識︓BigQuery①
    10
    BigQueryとは、機械学習、地理空間分析、ビジネスインテリジェンスなどの組み込み機能を使⽤してデータ
    の管理と分析を⽀援する、フルマネージドでサーバーレスのエンタープライズデータ ウェアハウスです。
    • SQLクエリを使⽤して、サーバーレスによりインフラストラクチャ管理なしで課題に対応
    • スケーラブルな分散型分析エンジンを使⽤すると、数TB、数PBのデータに対し、数秒もしくは数分でクエ
    リを完了
    • データを分析するコンピューティング エンジンとストレージの選択肢を分けることで、柔軟性を最⼤化
    • BigQuery内のテーブルは、データセット(テーブルとビューへのアクセスを整理して制御するもの)に編
    成される
    今回はPub/Subに送信されたメッセージを集約し、
    BigQueryに保存します。

    View Slide

  11. 事前知識︓BigQuery②
    11
    Googleでは、いくつかのパブリックPub/Subストリーミング データトピックを、このような検証向けに公開
    しています。今回は NYC Taxi & Limousine Commission の公開データセット を使⽤します。このOpen
    Dataは、ニューヨーク市の機関やその他のパートナーによって公開されている無料の公開データです。
    https://www.reddit.com/r/bigquery/wiki/datasets/#wiki_new_york_taxis_.28130_gb.2B.29
    ⼀般公開データセットは、BigQueryに保存され、Google Cloud⼀般公開データセットプログラムを通じて⼀
    般提供されているデータセットです。

    View Slide

  12. 事前知識︓Looker Studio
    12
    Looker Studio(旧称データポータル)とは、データを読み取りや共有が容易で柔軟にカスタマイズできる便
    利なダッシュボードとレポートに落とし込むことができるセルフサービス ビジネス インテリジェンスツール
    です。
    • データの可視化をより簡単にし、洗練されたデータダッシュボードを作成するための直感的なインター
    フェースを提供
    • 600種類以上のパートナーコネクタを通じて、豊富な
    データソースにアクセス
    • レポートテンプレートの堅牢なライブラリを利⽤して、
    データを数分で可視化可能
    今回は、複合グラフを使⽤したリアルタイムダッシュボード
    を作成して、データを可視化します。

    View Slide

  13. 事前知識︓Looker Studio(Looker との違いは︖)
    13
    Looker StudioがLookerのデータ可視化およびダッシュボード作成機能を強化したモジュールであるのに対
    し、Lookerはデータ分析およびビジネスインテリジェンスの包括的なデータプラットフォーム製品
    選定基準 Looker Looker Studio
    データ活⽤基盤を構築 ◎ ◯
    すぐに⼿軽にデータ分析を始めたい ◯ ◎
    組織全体でデータ分析 ◎ ◯
    組織外にも共有 ◎ ◯
    既存のワークフローを活⽤ ◎ ◯
    メンテナンスを効率化 ◯ △
    コスト △ ◎(基本無料)

    View Slide

  14. 事前作業
    14
    Cloud Storage バケットを作成
    Dataflowパイプラインの作業スペースとして、プロジェクトIDの名前でCloud Storageバケットを作成して
    おきます。

    View Slide

  15. 作業⼿順概要
    15
    No 作業内容
    1 テンプレートからDataflowジョブを作成する
    2 Pub/Subトピックをサブスクライブする
    3 DataflowパイプラインをBigQueryにストリーミングする
    4 BigQueryでDataflowパイプラインをモニタリングする
    5 SQLで結果を分析する
    6 Looker Studioで主要指標を視覚化する
    Pub/Sub を使⽤してタクシーからストリーミング データ メッセージを収集し、Dataflow パイプラ
    インを介して BigQuery にフィードします。

    View Slide

  16. デモ
    16
    ここからデモも交えて実際の動きを⾒ながら説明します。
    (全部で10〜15分くらいかかります)

    View Slide

  17. 1. Pub/SubトピックをソースとしてBigQueryデータセットを作成
    17
    Google Cloud コンソールで Pub/Sub トピックに適したスキーマを使⽤して、BigQuery のデータセットと
    テーブルを作成します。
    ここで、データセットの名前は「taxirides」、テーブルの名前は「realtime」です。このデータセットと
    テーブルを作成するには、以下の⼿順を⾏います。

    View Slide

  18. 1. Pub/SubトピックをソースとしてBigQueryデータセットを作成
    18
    1. BigQueryのプロジェクトIDの右横に表⽰される から、[データセットを作成] をクリック
    2. [データセットID] に「taxirides」と⼊⼒
    3. [ロケーションタイプ] で [us-central1 (アイオワ)] をクリックし、[データセットを作成] をクリック
    4. [エクスプローラ] ペインで をクリックして新しい taxirides データセットを表⽰
    5. taxirides データセットの右横の から、[テーブルを作成] をクリック
    6. [テーブル] に「realtime」と⼊⼒
    7. [スキーマ] で [テキストとして編集] をクリックし、以下のスキーマを貼り付け
    8. [パーティションとクラスタの設定] で [timestamp] を選択
    9. [テーブルを作成] をクリック
    [email protected]
    [email protected]
    MBUJUVEFGMPBU
    MPOHJUVEFGMPBU
    UJNFTUBNQUJNFTUBNQ
    [email protected]
    [email protected]
    [email protected]
    [email protected]

    View Slide

  19. (おまけ)BigQueryアップデート(Preview) Dataform
    19
    このデータセットの作成作業を、2023.5.4にGAされたDataformで実現できます。
    Dataformとは、SQLライクな拡張⾔語SQLXでテーブルやビュー作成クエリを記述することで、テーブル間
    の依存関係を管理しながらDWHにSQLを実⾏できるデータモデリングツールです。
    • DWH内でデータパイプラインを構築する ELT の T(変換)に特化
    • SQLだけを使って、データアナリストとデータエンジニアが協⼒して、継続的に更新・ドキュメンテー
    ション・テストされるテーブルを使⽤し、データモデル (データの信頼できる唯⼀のソース) を構築可能
    • BigQueryで、キュレートされた最新の信頼できる⽂書化されたテーブルを開発する
    • 依存関係を持った変換処理をバッチとして実⾏
    • GitHub および GitLab と統合
    • BigQuery にロードしたファイルデータに対して SQL を
    実⾏して、ビューを作成するようなユースケース
    • 無料︕
    https://cloud.google.com/dataform/docs/release-notes

    View Slide

  20. 2. Dataflow パイプラインを設定
    20
    Pub/Subからセンサーデータを読み取り、BigQueryに書き込むDataflowストリーミングデータパイプライ
    ンを設定します。
    1. Dataflowのメニューバーの [テンプレートからジョブを作成] をクリック
    2. Dataflowジョブのジョブ名として「streaming-taxi-pipeline」と⼊⼒
    3. [リージョンエンドポイント] で、[us-central1 (アイオワ)] を選択
    4. [Dataflowテンプレート] で、[Pub/Sub Topic to BigQuery] テンプレートを選択
    5. [Input Pub/Sub topic]で、「projects/pubsub-public-data/topics/taxirides-realtime」と⼊⼒し、
    [トピックを⼿動で⼊⼒]をクリック
    6. [BigQuery output table] に参照から「realtime」を選択
    7. [⼀時的な場所] で[参照]をクリックし、プロジェクトIDのバケットで[⼦リソースを表⽰] をクリック
    8. [新しいフォルダを作成] をクリックして、名前に「tmp」と⼊⼒
    9. [作成]をクリックし、[選択]をクリック
    10.([オプション パラメータを表⽰]をクリック)
    11.(「最⼤ワーカー数」に2と⼊⼒)
    12.(「ワーカーの数」に1と⼊⼒)
    13. 最後に[ジョブを実⾏]をクリック

    View Slide

  21. 2. Dataflow パイプラインを設定
    21
    Google が提供する「Pub/Sub Topic to BigQuery」テンプレートを使⽤して、ストリーミングパイプライン
    を実⾏しました。パイプラインは⼊⼒トピックから受信データを取得します。
    これで新しいストリーミングジョブが開始され、データパイプラインが視覚的に表⽰されるようになりまし
    た。
    データが BigQuery に移動し始めるまでに3分くらいかかります。

    View Slide

  22. (参考)BigQuery サブスクリプション
    22
    Pub/Sub から BigQuery への直接書き込み: Pub/Sub サブス
    クリプションを使⽤して、Pub/Sub から BigQuery にデータを
    シームレスに統合できるようになりました。
    昨年7⽉末まで、データを適切なスキーマで BigQuery に取り込む前に、中間のDataflowジョブを作成する
    必要がありました。Dataflow パイプラインは、BigQuery にエクスポートする変換なしの⽣データを単に必
    要とするユースケースでは、不要になる場合があります。
    Pub/Sub から BigQuery に直接書き込む BigQuery サブスクリプションと呼ばれる新しいタイプの
    Pub/Sub サブスクリプションが導⼊されました。BigQuery サブスクリプションは、メッセージを受信する
    と、既存の BigQuery テーブルにメッセージを書き込みます。サブスクライバー クライアントを個別に構成
    する必要はありません。さらに、BigQuery へのデータ取り込みに料⾦を⽀払う必要がなくなり、使⽤した
    Pub/Sub に対してのみ⽀払えばよくなります。
    BigQuery サブスクリプション
    No pipelines needed. Stream data with Pub/Sub direct to BigQuery

    View Slide

  23. (参考)練習問題
    23
    ユーザー アクティビティ データを BigQuery にリアルタイムで取り込むには︖
    • データを BigQuery に取り込むように Pub/Sub と Dataflow ストリーミング ジョブを設定する。
    ではなく
    • データを BigQuery にストリーミングするように Pub/Sub を設定する。
    がよりベターな選択肢

    View Slide

  24. 3. BigQuery を使⽤してタクシーデータを分析
    24
    ストリーミング中のデータを分析します。
    realtime テーブルに書き込まれたデータを表⽰する⽅法は次のとおりです。
    1. BigQueryのメニューで[クエリを新規作成]をクリック
    2. クエリエディターで次のように⼊⼒し、[実⾏]をクリック
    SELECT * FROM taxirides.realtime LIMIT 10

    View Slide

  25. (おまけ1)BigQuery の料⾦体系の変更
    25
    2023年4⽉からBigQueryの料⾦体系が以下のように変わりました︕
    • BigQueryの新価格体系がBigQuery Editions
    • BigQuery Editionsには2つの機能(Autoscaling、Compressed
    ストレージ)がある
    • Autoscalingは定額とオンデマンドのいいとこ取りで、柔軟な管理
    が可能
    • Compressedストレージで圧縮サイズでの課⾦が可能
    詳細は弊社公開ブログをご覧ください。
    「BigQueryに⼤幅アップデート︕コスト最適化の可能性あり」
    Compressedストレージ

    View Slide

  26. (おまけ2)BigQueryアップデート(Preview)柔軟な列名
    26
    BigQueryの2023.3.22のPreviewアップデートUnicode Column name(柔軟な列名)により、
    英語以外の⾔語の⽂字へのアクセスの拡張、記号の追加など、列名の柔軟性が向上しました。
    これにより、Unicodeの⽂字・数字・記号が列名に指定可能となりました。
    BIレポートなどで項⽬名を⽇本語名で表⽰させたい時などに使います。
    ただし、まだプレビュー段階であるため、正式にまだGAされていないのでご注意ください。
    今回は軽く紹介するために、あえて列名に⼀部⽇本語を使っているところがあります。

    View Slide

  27. 4. レポート⽤にストリームで集計を実⾏
    27
    レポート⽤にストリームで集計を計算します。
    1. 引き続きクエリエディターで次のように⼊⼒し、[実⾏]をクリック
    WITH streaming_data AS (
    SELECT
    timestamp,
    TIMESTAMP_TRUNC(timestamp, HOUR) AS `時`,
    TIMESTAMP_TRUNC(timestamp, MINUTE) AS `分`,
    TIMESTAMP_TRUNC(timestamp, SECOND) AS `秒`,
    ride_id,
    latitude,
    longitude,
    meter_reading,
    ride_status,
    passenger_count
    FROM
    taxirides.realtime
    ORDER BY timestamp DESC
    LIMIT 1000
    )
    # calculate aggregations on stream for reporting:
    SELECT
    ROW_NUMBER() OVER() AS `ダッシュボード_
    ソート`,
    `分`,
    COUNT(DISTINCT ride_id) AS `乗⾞合計`,
    SUM(meter_reading) AS `収益合計`,
    SUM(passenger_count) AS `乗客合計`
    FROM streaming_data
    GROUP BY `分`, timestamp

    View Slide

  28. 4. レポート⽤にストリームで集計を実⾏
    28
    最初のWITH句でサブクエリを実⾏し、以下のような情報を抽出
    このテーブルを「streaming_data」とし、分ごとに meter_reading を合計(収益合計)、
    passenger_count も合計(乗客合計)することで、タクシーの降⾞ごとに分単位で主要な指標が表⽰されま
    す。
    ちなみに TIMESTAMP_TRUNC(timestamp_expression, date_time_part[, time_zone])関数は、時刻の
    切り捨てを⾏います。例えば、HOURであれば「2023-03-15 03:00:00」、MINUTEであれば「2023-03-
    15 03:25:00」、SECONDであれば「2023-03-15 03:25:04」といった具合に切り詰めます。
    timestamp 時 分 秒 ride_id latitude longitude meter_reading ride_status passenger_count
    2023-03-15
    03:25:04.40960
    0 UTC
    2023-03-15
    03:00:00.00000
    0 UTC
    2023-03-15
    03:25:00.00000
    0 UTC
    2023-03-15
    03:25:04.00000
    0 UTC
    7f747431-196d-4098-
    b790-8649dbffbb7d
    40.73435 -73.83607 30.914001enroute 2

    View Slide

  29. 4. レポート⽤にストリームで集計を実⾏
    29
    2. [保存] > [クエリを保存]をクリック
    3. [クエリの保存]ダイアログの[名前]フィールドに「My Saved Query」と⼊⼒し、 [保存]をクリック

    View Slide

  30. 5. Dataflow ジョブを停⽌
    30
    Dataflow ジョブを停⽌して、プロジェクトのリソースを解放します。
    1. Dataflowの[ジョブ]メニューから「streaming-taxi-pipeline」をクリック
    2. [停⽌]をクリックし、[キャンセル] > [STOP JOB]をクリック
    3. 1つ前に戻り、アイコンが停⽌済みのアイコンになっていることを確認

    View Slide

  31. 6. リアルタイム ダッシュボードを作成
    31
    リアルタイム ダッシュボードを作成してデータを視覚化します。
    1. BigQueryのエクスプローラーペインで、プロジェクトIDを展開
    2. [保存したクエリ]を展開し、「My Saved Query」をクリック
    3. クエリがクエリエディターに読み込まれるので、[実⾏]をクリック
    4. [データを探索] > [Looker Studioで調べる]をクリック
    5. Looker Studio が開くので、Looker Studio ウィンドウで、棒グラフをクリック
    6. [グラフの追加]をクリックし、折れ線の[複合グラフ]を選択
    7. [設定]ウィンドウの[期間のディメンション]で、[minute(⽇付)]にカーソルを合わせ、[X]をクリックして
    削除
    8. [データ]ペインで「dashboard_sort」をクリックし、[設定] > [期間のディメンション] > [ディメン
    ションの追加]にドラッグ
    9. [設定] > [ディメンション]で、[minute]をクリックし、[dashboard_sort]を選択

    View Slide

  32. 6. リアルタイム ダッシュボードを作成
    32
    Looker Studio ではタイムスタンプとして分レベルの粒度でデータを視覚化することはサポートされていま
    せん。このため、独⾃の dashboard_sort ディメンションを作成しました。
    ディメンションとは、データをグループ化できる未集計の数値のセットで、どの範囲でデータを区切るかを
    指定します。
    10. [設定] > [指標]で「dashboard_sort」をクリックし、[total_rides]を選択
    11. [設定] > [指標]で[指標を追加]をクリックし、[total_passengers]を選択
    12. [設定] > [指標]で[Record Count]をクリックし、[total_revenue]を選択
    13. [設定] > [並べ替え]で[total_rides]をクリックし、[dashboard_sort]を選択
    14. [設定] > [並べ替え]で[昇順]をクリック
    15. 最後に[スタイル]の「軸タイトルを表⽰」にチェックして仕上げる
    16. [保存して共有]をクリックして、このデータソースを保存
    17. [レポートに追加]をクリック

    View Slide

  33. 7. 時系列ダッシュボードを作成
    33
    1. Looker Studioで、[ + ] 空⽩のレポートテンプレートをクリック
    2. Google Connectors のリストから、BigQueryを選択
    3. [カスタムクエリ]をクリックし、プロジェクトIDを選択
    4. [カスタムクエリを⼊⼒]に、次のクエリを貼り付け ⇨
    5. [データ]ペインで[フィールドの追加]をクリック
    6. 左隅にある[すべてのフィールド]をクリック
    7. timestampフィールドタイプを[⽇時]から[⽇付と時刻] > [⽇付、時、分] に変更
    8. 上部のメニューで[グラフを追加]をクリックし、時系列グラフ を選択
    9. [設定] > [ディメンション]で、[timestamp(⽇付)]をクリックし、[timestamp]を選択
    10. カレンダー部分を選択し、[タイプ]で[⽇付と時刻] > [⽇付、時、分]を選択
    11. [設定] > [指標]で、[Record Count]をクリックし、[meter_reading]を選択
    (時系列グラフは、Pub/Subから読み込まれたデータの量とレートによって異なります)
    4&-&$5

    '30.
    UBYJSJEFTSFBMUJNF
    8)&3&
    [email protected]

    View Slide

  34. (参考模擬試験問題)
    34
    スクーターシェアリング会社は、位置、バッテリー残量、速度など、保有するスクーターに関する情報を収
    集しています。このデータはリアルタイムで可視化されます。断続的な接続を防ぐため、各スクーターは短
    い間隔で特定のメッセージを繰り返し送信します。時折、データエラーも⾒受けられます。メッセージは、
    Pub/Sub で受信されて BigQuery に保存されます。
    データに重複がなく、空⽩フィールドのある異常なデータが拒否されるようにするには、どうすればよいで
    すか︖
    A. データを BigQuery に保存して、異常なデータと重複データのクエリ削除を実⾏する。
    B. Dataflow を使⽤して Pub/Sub にサブスクライブし、データを処理して BigQuery に保存する。
    C. Kubernetes を使⽤して、重複データと異常データを削除できるマイクロサービス アプリケーションを
    作成し、データを BigQuery に挿⼊する。
    D. マネージド インスタンス グループで Compute Engine に重複データと異常データを削除できるアプリ
    ケーションを作成し、データを BigQuery に挿⼊する。

    View Slide

  35. (参考模擬試験問題解答)
    35
    A. データを BigQuery に保存して、異常なデータと重複データのクエリ削除を実⾏する。
    B. Dataflow を使⽤して Pub/Sub にサブスクライブし、データを処理して BigQuery に保存する。
    C. Kubernetes を使⽤して、重複データと異常データを削除できるマイクロサービス アプリケーションを作
    成し、データを BigQuery に挿⼊する。⾮常に⼿間がかかり、推奨されない
    D. マネージド インスタンス グループで Compute Engine に重複データと異常データを削除できるアプリ
    ケーションを作成し、データを BigQuery に挿⼊する。⾮常に⼿間がかかり、推奨されない
    Dataflow は、ストリーミング データのための推奨データ処理プロダクトです。
    Dataflow をプログラミングして重複を削除し、空⽩フィールドを削除して、他のカスタムデータ処理を実⾏
    できます。

    View Slide

  36. 感想・まとめ
    36
    • Google Cloudのデータ分析系4サービス(Pub/Sub、BigQuery、Dataflow、Looker Studio)につい
    て同時に触れられるため、効率の良いスキルアップラボ
    • Dataflowを使⽤してストリーミングデータパイプラインを構築するための基礎的なスキルを習得できた
    • ストリームパイプラインの設定を⼿動ですることで、ストリームパイプラインのイメージができるように
    なった
    • 処理したストリーミングデータをBigQueryに格納し、可視化する⽅法を学べた
    • このようなダッシュボードを作成することで、ストリーミングデータの状況をリアルタイムで確認し、問
    題やチャンスを素早く把握、ビジネス上の意思決定に活⽤できそう
    • Google Cloud Professional Cloud Data Engineer 試験対策にもなる

    View Slide

  37. View Slide