Microsoft DP-750 (Azure Databricks Data Engineer Associate) 1-10

A. アナリストにTransactionsテーブルのSELECT権限を付与し、列レベルの暗号化を適用します。
B. 機密データを含まない列についてのみ、アナリストにSELECT権限を付与します。
C. アナリストにTransactionsテーブルのSELECT権限を付与し、行レベルフィルターを実装します。
D. アナリストにTransactionsテーブルのSELECT権限を付与し、email_address列とcredit_card_number列に列マスクを適用します。

回答
D. アナリストにTransactionsテーブルのSELECT権限を付与し、email_address列とcredit_card_number列に列マスクを適用します。

列マスクは、元の列値を利用者へ直接返さず、Unity Catalogに登録したユーザー定義関数の結果へ置き換える機能です。email_addressには「@」以降を返す関数、credit_card_numberには末尾4桁だけを返す関数を設定できます。
テーブルへのSELECT権限を付与するため、アナリストは全行と非機密列をエラーなく照会できます。
行フィルターは行自体を制限する機能であり、今回の列値の秘匿には適しません。
機密列のSELECT権限を外す方法も照会エラーの原因となるため、列マスクが最小特権の要件を満たします。

行フィルターと列マスク
列 mask 句

Q2.Unity Catalogが有効化され、catalog1という名前のカタログを含むAzure Databricksワークスペースがあります。
group1という名前のグループがあります。
catalog1にschema1という名前のスキーマを作成する予定です。
group1が次の要件を満たすようにする必要があります。
schema1にテーブルを作成できる。
テーブルを変更および照会できる。
スキーマとそのオブジェクトに対するアクセス許可を付与できない。
SQLステートメントをどのように完成させる必要がありますか。回答するには、回答領域で適切な選択肢を選択してください。

回答
下記画像参照

出題上は、USAGEによってschema1を使用でき、CREATE TABLEによってスキーマ内にテーブルを作成できます。MANAGEや所有権は付与していないため、group1にはアクセス許可を管理する権限を与えません。
なお、現在のUnity CatalogではUSAGEではなくUSE CATALOGとUSE SCHEMAを使用し、付与先もTO ROLEではなくTO principalの形式です。
また、既存の全テーブルを照会・変更させる場合はSELECTとMODIFYを別途付与します。
この問題は旧構文を前提とした出題です。

Unity カタログ権限リファレンス
GRANT

回答
下記画像参照

Azure Databricks Access ConnectorはマネージドIDを使用してAzure Storageへ接続するため、Databricks内にクライアントシークレットなどの資格情報を保存したり、ローテーションしたりする必要がありません。
READ VOLUMEはボリューム内のファイルとディレクトリの読み取りを許可しますが、追加、削除、変更は許可しません。BROWSEはオブジェクトを検出するための権限であり、ファイル内容を読み取れません。
WRITE VOLUMEはファイルの変更を許可するため要件外です。したがって、DatabricksアクセスコネクタとREAD VOLUMEの組み合わせが最小特権を満たします。
両名称は現在も使用されている正式名称です。

Azure Data Lake Storage Gen2 (ADLS Gen2) 外部の場所に接続する

A. はい。
B. いいえ。

回答
B. いいえ。

Lakeflow ConnectはSQL ServerのデータをAzure Databricksへ取り込み、宛先のDeltaテーブルに格納するため、「データをDatabricks管理ストレージへコピーしない」という要件を満たしません。
DB1のデータを移動せずに照会するには、Lakehouse Federationを使用して接続から外部カタログを作成します。
外部カタログは外部データベースのスキーマとテーブルをUnity Catalog内に表示し、元のSQL Server上のデータへ読み取り専用でアクセスできます。
したがって回答はBです。
Lakeflow ConnectとLakehouse Federationは現在も使用されている正式名称です。

Microsoft SQL Server でフェデレーション クエリを実行する
外部カタログの管理と操作

A. はい。
B. いいえ。

回答
B. いいえ。

DB1のスキーマとテーブルをデータコピーなしでUnity Catalogに公開するには、既存の接続を使用して外部カタログを作成します。
外部カタログは外部データベースを反映し、Databricksから読み取り専用のフェデレーションクエリを実行できます。
Azure Databricksアクセスコネクタは、マネージドIDをDatabricksへ関連付けてAzure Storageなどへの認証に利用するリソースであり、SQL ServerのスキーマやテーブルをUnity Catalogへ登録する機能ではありません。
したがって、このソリューションは要件を満たしません。Lakehouse Federation、外部カタログ、およびAzure Databricksアクセスコネクタはいずれも現在使用されている正式名称です。

Microsoft SQL Server でフェデレーション クエリを実行する
外部カタログの管理と操作

A. はい。
B. いいえ。

回答
A. はい。

外部カタログは、外部データベースをUnity Catalog内に反映し、スキーマとテーブルを他のカタログオブジェクトと同様に表示して照会できるようにします。
Lakehouse Federationによるクエリフェデレーションでは、SQL Server上のデータをその場所に保持したまま読み取り専用で照会するため、Databricks管理ストレージへのコピーは発生しません。
したがって、カタログ エクスプローラーで外部カタログを作成するソリューションは、すべての要件を満たします。
「外部カタログ」「Lakehouse Federation」「カタログ エクスプローラー」は現在も使用されている正式名称です。

クエリフェデレーションとは
外部カタログの管理と操作

A. はい。
B. いいえ。

回答
B. いいえ。

通常のネイティブカタログを新規作成しても、SQL Server上のDB1のスキーマやテーブルは自動的に反映されません。
データをコピーせずにUnity Catalog内へ表示して照会するには、既存の接続を使用し、Lakehouse Federationの外部カタログを作成する必要があります。
外部カタログは外部データベースをミラー化し、元のSQL Serverにデータを保持したまま読み取り専用クエリを実行できます。
したがって、このソリューションは要件を満たしません。
現行の公式ドキュメントでは、外部データベースを反映するオブジェクトを「外部カタログ」と呼びます。

クエリフェデレーションとは
外部カタログの管理と操作

A. 手動
B. ファイル到着
C. スケジュール
D. 継続

回答
D. 継続

継続トリガーはジョブを常時実行状態に保ち、実行が完了または失敗すると次の実行を開始します。
そのため、一定のスケジュールを待たず、新しいレコードを継続的に処理する要件に適しています。
ファイル到着トリガーは、監視対象のUnity Catalogストレージ場所に新しいファイルが到着した場合に限定されます。
本問では入力がファイルとは指定されていないため、継続トリガーが適切です。
なお、Lakeflow Jobsの継続トリガーは、SparkのContinuous Processingトリガーとは別の機能です。
Lakeflow Jobsは現在の正式名称です。

スケジュールとトリガーを使用してジョブを自動化する
構造化ストリーミングの運用に関する考慮事項

A. SELECTステートメントでWHERE条件を使用し、クエリを実行する前にデータを検証します。
B. transaction_idがNULL、またはamountが0以下の行を除外するビューを作成します。
C. transaction_idにNOT NULL制約を追加し、amountにCHECK制約を追加します。
D. transaction_idがNULL、またはamountが0以下の場合に適用される行レベルセキュリティ(RLS)を構成します。

回答
C. transaction_idにNOT NULL制約を追加し、amountにCHECK制約を追加します。

NOT NULL制約はtransaction_idへのNULLの格納を禁止し、CHECK制約でamount > 0を定義すると、条件を満たさない書き込みがテーブルレベルで拒否されます。
これらはDeltaテーブルで強制されるデータ品質制約です。
WHERE句やビューは照会時に無効な行を除外するだけで、元テーブルへの不正データの書き込みを防止できません。
RLSも行の参照範囲を制御する機能であり、データ品質検証には使用しません。
Unity Catalog、Deltaテーブル、NOT NULL制約、CHECK制約はいずれも現在使用されている正式名称です。

Azure Databricks の制約
ADD CONSTRAINT 句

A. 両方のテーブルに複数回出現する値が表示されます。
B. いずれか一方のテーブルに複数回出現する値が表示されます。
C. Table2には出現するが、Table1には出現しない値が表示されます。
D. Table1に複数回出現する値が表示されます。

回答
A. 両方のテーブルに複数回出現する値が表示されます。

各SELECTでは、GROUP BYで列の値ごとに行をまとめ、HAVING COUNT(*) > 1によって、そのテーブル内に複数回出現する値だけを抽出します。
HAVINGはGROUP BYによる集計結果を条件で絞り込む句です。
INTERSECTは、前後のSELECT結果の両方に存在する値だけを返します。
ALLを指定していないため既定のDISTINCTとして処理され、結果内の重複も除去されます。
したがって、Table1とTable2の両方で複数回出現する値が1回ずつ表示されます。
INTERSECTやDeltaテーブルは現在も使用されている正式名称です。

集合演算子
HAVING 句