タイプ2の緩やかに変化するディメンション(SCD)の場合、通常、ソースシステムには存在しない以下の種類の列を追加する必要があります。
* 有効開始日時 (E): この列には、行のデータが有効になる日時が記録されます。
* 有効終了日時 (A): この列は、行内のデータが有効であった終了日時を示します。
これにより、時間の経過に伴う変化の履歴記録を保存することができます。
* サロゲートキー(C):サロゲートキーは、テーブル内の各行の一意の識別子であり、タイプ2 SCDが履歴レコードと現在のレコードを区別するために必要です。
参考資料:タイプ 2 SCD を含む、データウェアハウス ソリューションにおける緩やかに変化するディメンションの設計に関するベスト プラクティスは、データウェアハウスおよびビジネス インテリジェンスの文献で一般的に議論されており、Fabric テナントのドキュメントのモデリング ガイダンスの一部となります。
トピック1:Litware社の事例研究
概要
Litware社は北米各地にオフィスを構える製造会社です。Litware社の分析チームは、データエンジニア、分析エンジニア、データアナリスト、データサイエンティストで構成されています。
既存の環境
litwareは3年間Microsoft Power BIテナントを使用しています。Litwareはファブリックの機能や特徴を一切有効化していません。
ファブリック環境
Litwareには、以下の表に示すように分析する必要のあるデータが含まれています。

製品データには、単一のテーブルと以下の列が含まれています。

顧客満足度データには、以下の表が含まれています。
* 調査
* 質問
* 応答
提出されたアンケートごとに、以下のことが起こります。
* 調査テーブルに1行が追加されます。
* アンケートの各質問ごとに、回答テーブルに1行が追加されます。
質問表には、各アンケートの質問文が記載されています。各アンケート回答の3番目の質問は、総合的な満足度スコアです。お客様は購入後にアンケートに回答できます。
ユーザーの問題
分析チームは大量のデータを保有しており、その中には半構造化データも含まれている。チームはFabricを使用して新しいデータストアを構築したいと考えている。
商品データは、多くの場合、高価格、中価格、低価格の3つの価格帯に分類されます。このロジックは複数のデータベースやセマンティックモデルで実装されていますが、実装間で必ずしも一致するとは限りません。
計画されている変更
Litwareは、既存のテナントでFabric機能を有効化する予定です。分析チームは、概念実証(PoC)として新しいデータストアを作成します。残りのLitwareユーザーは、PoCが完了した後にのみFabric機能にアクセスできるようになります。PoCは、Fabricのトライアル容量を使用して実施されます。
以下の3つのワークスペースが作成されます。
* AnalyticsPOC: データストア、セマンティックモデル、レポート、パイプライン、データフロー、およびデータストアへのデータ投入に使用されるノートブックが含まれます。
* DataEngPOC: Onelakeにデータを投入するために使用されるすべてのパイプライン、データフロー、ノートブックが含まれます。
* DataSciPOC: データサイエンティストが作成したすべてのノートブックとレポートが含まれます。AnalyticsPOCワークスペースには以下が作成されます。
* データストア(種類は未定)
* カスタムセマンティックモデル
* デフォルトのセマンティックモデル
* インタラクティブなレポート
データエンジニアは、データソースに応じて、1時間ごとまたは1日ごとにOneLakeにデータをロードするためのデータパイプラインを作成します。アナリティクスエンジニアは、データを取り込み、変換し、AnalyticsPOCワークスペースのデータストアに毎日ロードするプロセスを作成します。データエンジニアは、可能な限りローコードツールを使用してデータを取り込みます。使用するデータクレンジングおよび変換ツールの選択は、データエンジニアの裁量に委ねられます。
Analytics POCワークスペース内のすべてのセマンティックモデルとレポートは、データストアを唯一のデータソースとして使用します。
技術要件
データストアは以下の機能をサポートする必要があります。
* T-SQLまたはPythonを使用して読み取りアクセスを行う
半構造化データおよび非構造化データ
* T-SQLクエリを実行するユーザーに対する行レベルセキュリティ(RLS)
データエンジニアがOneLakeにロードするファイルはParquet形式で保存され、Delta Lakeの仕様に準拠します。
データは、変換されずにAnalyticsPOCデータストアの特定の領域にロードされます。その後、データはクレンジング、マージ、およびディメンションモデルへの変換が行われます。
データロードプロセスでは、ディメンションモデルにデータを入力する前に、生データとクレンジング済みデータが完全に更新されていることを確認する必要があります。
ディメンションモデルには日付ディメンションを含める必要があります。日付ディメンションに対応する既存のデータソースはありません。Litwareの会計年度は暦年と一致しています。日付ディメンションには、常に2010年から当年末までの日付を含める必要があります。
製品価格グループのロジックは、分析エンジニアが単一の場所で管理する必要があります。価格グループのデータは、T-SQLクエリ用のデータストアとデフォルトのセマンティックモデルで利用可能にする必要があります。以下のロジックを使用する必要があります。
* 定価が50以下の商品は低価格帯に分類されます。
* 定価が50より大きく1,000以下の商品は、中価格帯に分類されます。
* 1,000を超える価格の商品は高価格帯に分類されます。
セキュリティ要件
PoCの一環として作成されたFabricアイテムは、Fabric管理者と分析チームのみが閲覧できる必要があります。Litwareは、AnalyticsPOCワークスペース内のFabricアイテムに対して、以下のセキュリティ要件を定めています。
* Fabric管理者はワークスペース管理者になります。
* データエンジニアは、データストアへの読み書きができる必要があります。データセットやレポートへのアクセス権は一切付与してはなりません。
分析エンジニアは、データストアのスキーマの読み取り、書き込み、および作成ができる必要があります。また、データアナリストとセマンティックモデルを作成して共有したり、ワークスペース内のすべてのレポートを表示および変更したりできる必要もあります。
* データサイエンティストは、データストアからデータを読み取ることはできるが、書き込むことはできない。彼らはSparkノートブックを使用してデータにアクセスする。
* データアナリストは、データストア内のディメンションモデルオブジェクトへの読み取りアクセス権のみを持つ必要があります。また、分析エンジニアが作成したセマンティックモデルを使用してPower BIレポートを作成するためのアクセス権も必要です。
* 日付ディメンションは、データストアのすべてのユーザーが利用できる必要があります。
最小権限の原則に従わなければならない。
デフォルトおよびカスタムのセマンティックモデルには、データストア内のディメンションモデルのテーブルまたはビューのみを含める必要があります。Litwareには既に以下のMicrosoft Entraセキュリティグループが設定されています。
* FabricAdmins: Fabric管理者
* アナリティクスチーム:アナリティクスチームの全メンバー
* データアナリスト:分析チームのデータアナリスト
* データサイエンティスト:分析チームのデータサイエンティスト
* データエンジニア:分析チームのデータエンジニア
* アナリティクスエンジニア:アナリティクスチームのアナリティクスエンジニア
レポート要件
データ分析では、以下の要件を満たす顧客満足度レポートを作成する必要があります。
* ユーザーが製品を選択することで、顧客アンケートの回答をその製品を購入したユーザーのみに絞り込むことができます。
* 選択した日付までの過去12か月間に提出されたすべてのアンケートの平均総合満足度スコアを表示します。
* データストア内のデータが更新されるとすぐにデータが表示されます
* レポートとセマンティックモデルには、今年と前年のデータのみが含まれるようにします。
* レポートがソースデータストアで指定されたテーブルレベルのセキュリティを確実に遵守するようにします
* レポートクエリの実行時間を最小限に抑えます