Microsoft DP-203(Data Engineering on Microsoft Azure)1-10

DISPLAY SETTINGS 各種設定 クリックして開くクリックして閉じる
表示モード
画像位置
文字位置
理解度の自動記録
理解度の位置
STATUS FILTER 表示する理解度を選択 読み込み中...
Q1
DP-203
解答を見る
正解:B. プル リクエストを作成し、変更を main ブランチへマージする

Azure Data Factory の Git 連携では、ライブ環境へ発行する前に、変更をコラボレーション ブランチへ統合しておく必要があります
機能ブランチ xyz の変更をそのまま公開することはできず、まず main ブランチへプル リクエストでマージしてチームの共有状態にします。
その後に発行(Publish)操作を行うと、ライブ環境へ反映されます。
したがって最初に行うべき操作は main へのマージであり、ブランチ戦略と公開フローを正しく理解することが重要です。
Azure Data Factory でのソース管理

Q2
DP-203
P1

P2

解答を見る
正解:コピー方法を PolyBase に設定する/コピー方法を Bulk insert に設定する

P1 は WS1 の専用 SQL プールから Azure Data Lake Storage Gen2 へデータを移動します。
この構成では PolyBase を使用することで大規模データを並列にロードでき、最も高い性能が得られます
一方 P2 はテキスト区切りファイルを扱うため PolyBase は利用できず、Bulk insert を選択する必要があります
データ形式とロード方式の適合性を理解し、コピー方法を正しく使い分けることが Synapse の性能最大化につながります。
Azure Synapse Analytics とは

Q3
DP-203
解答を見る
正解:C. Azure Stream Analytics

リアルタイム処理と既存 C# コードの再利用が要件であるため、Azure Stream Analytics が最適です
特に IoT Edge 上で実行する場合、C# のユーザー定義関数(UDF)を通じて既存ロジックをそのまま再利用できます。
Databricks は Spark によるバッチ処理、Event Grid はイベント通知、Data Factory はバッチ統合が主目的であり、いずれも要件に合いません。
したがってリアルタイム分析と C# 再利用を両立できる Stream Analyticsが正解です。
IoT Edge での Azure Stream Analytics

Q4
DP-203
Storage(保存先)

Format(形式)

解答を見る
正解:フォルダー内での時間スライス パーティション/Apache Parquet

毎日追加される大量ファイルを効率よく取り込むには、フォルダーを時間(タイムスライス)でパーティション分割することが重要です。
これにより新規データのみを対象に読み込め、スキャン範囲を最小化できます。
ファイル形式は列指向で圧縮効率の高い Apache Parquet を使用すると、I/O とクエリ性能が向上します。
行指向の CSV や JSON は不要な列まで読み込むため非効率です。
時間パーティションと Parquet の組み合わせが増分ロード時間の最小化に最適です。
外部テーブルの作成と使用

Q5
DP-203
①(作成するオブジェクトの句)

②(Parquet を参照する関数)

解答を見る
正解:CREATE VIEW/OPENROWSET

サーバーレス SQL プールで Data Lake Storage Gen2 上の Parquet を直接参照する場合、OPENROWSET を使って外部データを読み込みます
設問の SQL は Parquet から id や住所列のみを取得しているため、②には OPENROWSET が入ります。
また物理テーブルを作る CREATE TABLE ではなく、データを移動せず必要な列だけを公開できる CREATE VIEW を使うのが一般的な構成です。
したがって①は CREATE VIEW、②は OPENROWSET が正解です。
外部テーブルの作成と使用

Q6
DP-203
解答を見る
正解:C. Parquet ファイルの列のサブセットを含む外部テーブルを作成する

Parquet は列指向形式のため、必要な列だけを参照する構成がストレージおよびクエリのコスト最適化に有効です。
外部テーブルで参照する列を必要なものだけに絞ることで、不要な列の読み取りを避け、サーバーレス SQL プールのスキャン量を抑制できます。
OPENROWSET は参照方法にすぎず、保存コストそのものを下げる手段ではありません。
列指向形式の特性を活かした設計を選ぶことが重要です。
Synapse SQL で外部テーブルを使用する – Azure

Q7
DP-203
問題文 はい いいえ
このクエリによって datarows という名前のテーブルが作成される
https://mydatalake.blob.core.windows.net/data/file1 ファイルが読み取られる
https://mydatalake.blob.core.windows.net/data/folder1/file1.csv ファイルが読み取られる
解答を見る
正解:1問目「いいえ」/2問目「いいえ」/3問目「はい」

datarows はテーブル名ではなく OPENROWSET の結果セットに付けた別名であり、テーブルは作成されません。
そのため1つ目の記述は誤りです。
BULK パス末尾の /** はフォルダーを再帰的に走査し、サブフォルダー内のファイルを対象にします
data 直下の file1 は読み取られず、data/folder1/file1.csv は読み取られます。
ワイルドカード指定と別名の意味を区別して理解することが重要です。
サーバーレス SQL プールを使用して、フォルダーと複数のファイルに対してクエリを実行する

Q8
DP-203
解答を見る
正解:A. 40

専用 SQL プールでは内部的に60個のディストリビューションへ分割されるため、列ストアの最適な圧縮には各パーティションあたり約100万行が目安になります。
総行数24億件から、24億 ÷(100万 × 60)=40 が求められます。
パーティションを増やしすぎると1区画あたりの行数が減り、列ストアの圧縮効率とクエリ性能が低下します。
適切な粒度で分割する設計が重要で、最適な範囲数は40です。
専用 SQL プールのベスト プラクティス – Azure Synapse Analytics

Q9
DP-203
①(集計関数)

②(ウィンドウ関数)

③(日付関数)

解答を見る
正解:MAX/TumblingWindow/DATEDIFF

10分ごとの最後のイベントを求めるには、まず10分単位でイベントを区切る必要があります。
重複しない固定長の時間枠を作るTumblingWindow を使用します(②)。
次に各ウィンドウ内の最新時刻を得るため、①ではMAX(Time) を使用します。
さらに元データと最新時刻を結合する際、時刻の差を判定するため③では DATEDIFF を用い、DATEDIFF(minute, Input, LastInWindow) BETWEEN 0 AND 10 のように対象イベントを関連付けます。
Azure Stream Analytics のウィンドウ関数

Q10
DP-203
コスト最小化

削除方法

解答を見る
正解:ローカル冗長ストレージ (LRS)/Azure Storage ライフサイクル管理

コストを最小化するには冗長性を抑える必要があり、ローカル冗長ストレージ(LRS)を選ぶと最も低コストになります。
365日を過ぎた BLOB の自動削除には、Azure Storage のライフサイクル管理ポリシーで自動削除する方法が最適です。
Automation Runbook は運用負荷が高く、Soft delete は削除を取り消すための機能で要件に合いません。
したがって LRS とライフサイクル管理の組み合わせが最適解です。
Azure Blob Storage のライフサイクル管理の概要