この記事では、GCPの認定試験であるProfessional Data Engineerの模擬試験の解説をします。 模擬試験終了後に簡易的な解説は表示されますが、もっと汎用的な関連知識を深めることを目的としています。目次 Toggle設問1:標準SQLとBigQueryのデータインポートに関する出題設問2:DataprocクラスタのライフタイムとGCSとの連携に関する出題設問3:標準SQLの定義済み関数に関する出題設問4:Dataflowの各ウィンドウ集計の特徴に関する出題設問5:BigQueryのデータインポートに関する出題設問6:HadoopジョブのGCPへの移行に関する出題設問7:BigQueryとBigTableの差に関する出題設問8:PubSubのメッセージ順序指定に関する出題設問9:メッセージのスケーラビリティ対応と時系列データを扱う製品の選択に関する出題設問10:標準SQLの使用とSpackジョブを実行する製品の選択に関する出題設問11:Cloud Spannerの特徴に関する出題設問12:Airflowとbqコマンドに関する出題設問13:Dataflowのウィンドウ集計に関する出題設問14:Dataflowのウィンドウ集計に関する出題設問15:Apache Beamの基本に関する出題無料トレーニングのご案内設問1:標準SQLとBigQueryのデータインポートに関する出題ANSI SQLとはBigQueryの文脈では標準SQLと呼ばれる規格化されたSQLのことです。 BigQueryは従来少し独特なSQLが使われていて、今でもレガシーSQLという形で利用することができます。 MySQLなどで利用できる標準SQLをそのままBigQueryでも利用できるというのがBigQueryの長所の1つです。 BigQuery固有のSQLは今でもレガシーSQLとして残っています。SQLを利用するために、ストレージにはBigQueryを利用する必要があり、JSONをインポートする際にスキーマの自動検出を有効にすることで、変更されるスキーマにも対応することができます。 スキーマを自動検出するには、テーブル作成時にチェックボックスをONにするだけです。設問2:DataprocクラスタのライフタイムとGCSとの連携に関する出題Dataprocでよく問われるポイントは、「1つのクラスタでは1つのジョブを実行し、クラスタのライフタイムはジョブの実行が終わるまで」です。 Dataprocを利用すればクラスタはいつでも用意できるので、クラスタを保持し続ける必要がありません。 そのため、1つのクラスタで複数のジョブを実行するような用途は試験の回答としては不適切です。また、DataprocはCloud Storageのファイルを利用できますし、BigQueryはParquet形式のファイルをインポートすることができます。 BigQueryがインポートできるファイル形式は、CSV, Avro, JSON, Parquet, ORCです。設問3:標準SQLの定義済み関数に関する出題次のクエリをBigQueryで実行してみます。WITH Numbers AS ( SELECT 1 as x UNION ALL SELECT 3 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 8 UNION ALL SELECT 10 UNION ALL SELECT 10 ), Rownums AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY x ORDER BY x ASC) AS row_num FROM Numbers ) SELECT * FROM Rownums; xrow_num1131324181101102ROW_NUMBER()とPARTITION BYを利用すれば、カラムxの値の出現回数をカウントすることができます。 つまり、 WHERE row_num = 1の条件を加えることで、xの重複を排除することができます。設問4:Dataflowの各ウィンドウ集計の特徴に関する出題Dataflowのセッションウィンドウを利用すると、任意のKey毎にデータを集計することができるため、この特徴がプレーヤー毎の集計に役立ちます。 グローバルウィンドウでは時間ベースの集計しかできないため、プレーヤー毎の集計をするのであればセッションウィンドウの方が適しています。 次の図はセッションウィンドウのイメージです。 セッションウィンドウでは、データの集計単位はギャップ時間に依存しています。 最小ギャップ時間を15分と設定した場合、最後にデータが到着したタイミングから15分以内に到着したデータは同じウィンドウ内のデータになります。 つまり、15分遅れて配信されたデータであっても同じウィンドウで集計することができます。設問5:BigQueryのデータインポートに関する出題特に追加で解説することがないのですが、全てのデータが正常にインポートできたということから、エラーが発生する選択肢を除けば良いだけです。設問6:HadoopジョブのGCPへの移行に関する出題Hadoopジョブを再利用するのであればDataprocを利用します。 逆に、新規にETLジョブを構築するのであればDataflowを利用する選択肢を選びましょう。 Dataprocのクラスタはジョブが終われば破棄されることが前提のため、データをCloud Storageへ保存してクラスタのライフタイムに依存しないようにしましょう。設問7:BigQueryとBigTableの差に関する出題BigTableの利用パターンの特徴としては主に以下の2点です。時間の経過と共に継続的に発生するデータ(時系列データ)大量のデータの書き込み低いレイテンシでの読み込みと書き込みこの問題の場合、おそらくBigQueryでも似たようなことはできると思います。 25万台のデバイスが10秒毎にデータを送る程度であれば、BigQueryのストリーミングインサートでも十分対応できる可能性があります。 ストリーミングインサートの具体的な各種上限についてはこちらを参照してください。こういう微妙なケースでは、より適している方を頑張って選ぶしかないので、時系列データと強調されていることからBigTableを選択します。cbtツールとHBaseシェルでは、gcloud components install で利用できる点から、cbtツールの方がより簡単に利用することができます。設問8:PubSubのメッセージ順序指定に関する出題これは、PubSubメッセージの順序指定を利用することで実現できます。設問9:メッセージのスケーラビリティ対応と時系列データを扱う製品の選択に関する出題メトリックのスケールに対応するためにPubSubを利用します。 時系列データに対応するために、書き込み先にBigTableを選択しましょう。設問10:標準SQLの使用とSpackジョブを実行する製品の選択に関する出題Sparkのジョブを実行するために、Dataprocを利用します。 標準SQLを利用するために、BigQueryにデータを書き込みます。設問11:Cloud Spannerの特徴に関する出題ポイントは以下の通りです。リレーショナルデータであること世界中からデータの読み書きがあること水平スケールが必要なことこの要件を満たせるのはCloud Spannerとなります。 ストレージ容量を計測してもスケールさせるべきかどうかを判断できないため、CPU使用率を計測するのが適切です。設問12:Airflowとbqコマンドに関する出題該当Operatorのドキュメントはこちらですが、使ったことがなければ直接正解にたどり着くのは難しいです。 Airflowを理解するのは大変なので、bqコマンドの制約を理解しておきましょう。設問13:Dataflowのウィンドウ集計に関する出題任意のKey毎にデータを集計するには、セッションウィンドウが便利です。 30分ごとに必ずセッションIDが更新されることを考慮すれば、セッションウィンドウの最小ギャップ時間を30分とすることで、セッション内の全てのイベントをトラッキングすることができます。設問14:Dataflowのウィンドウ集計に関する出題ギャップ時間を60分に設定することで、ユーザが操作をしなくなってから60分後にウィンドウがトリガーされます。 固定ウィンドウやスライディングウィンドウを60分に設定すると、ユーザが最初に操作を行ってから必ず60分後にウィンドウがトリガーされるため不適切です。設問15:Apache Beamの基本に関する出題Apache Beamの基本的な知識を問われています。 ParDoやCombineはPCollectionの変換や集計を行うものであり、データベースに書き込みをするものではありません。後編はこちら 無料トレーニングのご案内認定試験に向けて体系的に Google Cloud のことを学びたい!という方は、ぜひ無料トレーニングの受講をおすすめいたします。オンラインでハンズオン体験ができますので、興味がある方はお気軽にご参加ください。無料トレーニングの詳細・お申し込みはこちら https://cloud-ace.jp/free-gcp-training/