データプラットフォームのデータウェアハウスモデル設計


序文

いくつかの良い記事を見た後、友人と共有するためにそれらを要約して統合しました。

Kimball と Enmen が共同で作成したデータ ウェアハウス モデリング設計手法。この手法は、データ レイクに基づく最新のデータ ウェアハウスの設計にとって非常に重要であるため、以下を理解する必要があります。

Enmenが提案するモデリング手法はトップダウン (ここでのトップはデータのソースを指し、従来のデータ ウェアハウスでは各ビジネス データベースを指します) であり、データ ウェアハウスはビジネス内の各エンティティと関係に基づいて構築されます。エンティティ間。たとえば、Enmen モデリングの思考モードに従って、バイヤーが商品を購入するという最も単純なシナリオでは、最初にどのエンティティがこのビジネス プロセスに関与しているかを明確にする必要があります。購入者と製品は実体であり、製品を購入する購入者は関係です。したがって、モデル設計には、バイヤー テーブル、商品テーブル、バイヤー 商品取引テーブルの 3 つのモデルが必要です。

キンボールモデリングは Enmen とは正反対で、データ分析のニーズから始まり、ディメンションとファクトを分割するボトムアップのモデル設計方法です。その場合、ユーザーと製品はディメンションであり、在庫とユーザー アカウントの残高は事実です。

これら 2 つの手法にはそれぞれ長所と短所があります。Enmen モデリングはデータソースから構築されるため、構築コストが比較的高くなります。金融分野など、適用シナリオが比較的固定されたビジネスに適しており、その利点は次のとおりです。冗長データが少なくなります。Kimball モデリングは分析シナリオから開始するため、インターネット ビジネスなど、比較的変化の速いビジネスに適しています。現在のビジネスの変化は比較的早いため、キンボールのモデリングと設計手法をお勧めします。

1. 次元モデリングの基本概念

ディメンション モデルは、データ ウェアハウス エンジニアリングの分野で最も一般的なデータ ウェアハウス モデリングの古典です。ディメンションモデリングは、分析と意思決定のニーズに基づいてモデルを構築し、構築されたデータモデルが分析ニーズに応えるため、ユーザーの分析ニーズをより迅速に解決することに重点を置き、大規模なデータに対する応答パフォーマンスも向上します。 -大規模で複雑なクエリ。

ディメンション モデリングは、分析データベース、データ ウェアハウス、データ マートのモデリングに特に適用される方法です。データ マートは、小規模なデータ ウェアハウスとして理解できます。

1.1 ファクトテーブル

現実世界で発生する運用イベントとその測定可能な値は、ファクト テーブルに保存されます。最も低い粒度レベルでは、ファクト テーブルの行は測定イベントに対応し、その逆も同様です。ファクト テーブルは、分析の主題に関するメジャーを表します。たとえば、購買行動を事実として理解できます。

図の注文テーブルはファクトテーブルであり、現実に発生する運用イベントであることが分かり、注文が完了するたびに注文にレコードが追加されます。

ファクト テーブルの特性: テーブルには実際のコンテンツは格納されません。ファクト テーブルは主キーのコレクションであり、これらの ID はディメンション テーブル内のレコードに対応します。ファクト テーブルには、各ディメンション テーブルに関連付けられた外部キーが含まれており、ディメンション テーブルに関連付けることができます。ファクト テーブルの測定は通常、数値型 (項目/項目/時間) であり、レコード数は増加し続け、テーブル データのサイズは急速に増大します。

1.2 寸法表

ディメンションは、データ分析時に使用される数量を表します。たとえば、製品の売上を分析する場合は、カテゴリ別または地域別の分析を選択できます。…によるそのような分析は次元を構成します。

上図の user テーブル、business テーブル、time テーブルはすべてディメンション テーブルです。これらのテーブルには一意の主キーがあり、テーブルに詳細なデータ情報が格納されます。

  • 例:取引金額分析分析

男性ユーザーの注文金額、レノボ製品の注文金額、第1四半期の注文金額、携帯電話の注文金額、在宅注文の注文金額

  • 例: 生徒の分析

張姓の学生は何人、男子学生は何人、江蘇省からの学生は何人、身長 170cm 未満の学生は何人、23 歳未満の学生は何人。

各ディメンション テーブルには 1 つの主キー列が含まれています。ディメンション表の主キーは、それに関連付けられたファクト表の外部キーとして使用できます。もちろん、ディメンション表の行の記述環境はファクト表の行に正確に対応する必要があります。ディメンション テーブルは通常、幅が広く、平坦で、粒度の低いテキスト属性を多数含む非標準のテーブルです。

一般に、データ ウェアハウスでは標準的な設計原則に厳密に従う必要はありません。データ ウェアハウスの主な機能は分析指向のクエリベースであり、データ更新操作を含まないためです。

ファクト テーブルの設計は、履歴情報を正しく記録する機能に基づいています。

ディメンション テーブルは、主題のコンテンツを適切な角度で集約するように設計されています。

2. 3 つの次元モデリング モード

2.1 スタースキーマ

スター スキーマ (スター スキーマ) は、最も一般的に使用されるディメンション モデリング方法です。スター スキーマはファクト テーブルを中心としており、すべてのディメンション テーブルはスターのようにファクト テーブルに直接接続されています。スター スキーマの次元モデリングは、ファクト テーブルと一連の次元テーブルで構成され、次の特徴があります。

ディメンション テーブルはファクト テーブルにのみ関連付けられており、ディメンション テーブル間には関連付けがありません。
各ディメンション テーブルの主キーは単一の列であり、主キーはファクト テーブルの両側を接続する外部キーとして配置されます。 ;
ファクト テーブルをコアとして、その周りにディメンション テーブルが形成されます。

2.2 スノーフレークモード

スノーフレーク スキーマはスター スキーマの拡張です。スノーフレーク スキーマのディメンション テーブルには他のディメンション テーブルを含めることができます。このモデルはスター スキーマよりも標準化されていますが、このモデルは理解しにくいため、メンテナンス コストが比較的高く、パフォーマンスの面では多層ディメンションです。テーブルを関連付ける必要がある パフォーマンスもスター スキーマより低い。したがって、一般的にはあまり使用されません。

2.3 コンスタレーションモード

コンスタレーション スキーマはスター スキーマの拡張であり、スター スキーマは 1 つのファクト テーブルに基づいていますが、コンスタレーション スキーマは複数のファクト テーブルに基づいており、ディメンション情報を共有します。
上記で紹介した 2 次元モデリング手法は、単一のファクト テーブルに対応する多次元テーブルですが、多くの場合、ディメンション空間には複数のファクト テーブルが存在し、1 つのディメンション テーブルが複数のファクト テーブルで使用されることもあります。ビジネス開発の後期段階では、ほとんどの次元モデリングでコンスタレーション モデルが使用されます。

3. ChatGPT が SQL Boy を置き換える

ChatGPT は、自然言語処理と機械学習テクノロジーに基づいた人工知能モデルであり、テキストの生成、質問への回答、翻訳などのタスクに使用できます。データベース管理とデータ分析の分野では、SQL はリレーショナル データベースからデータを取得および操作するために一般的に使用されるクエリ言語です。SQL ステートメントを生成すると、ユーザーはデータを迅速かつ効果的に抽出し、作業効率を向上させることができます。

ChatGPT を使用して SQL を生成する背景は、自然言語クエリ データベースの要件に基づいています。SQL に慣れていない人にとって、SQL を学習するコストは比較的高く、SQL 構文は複雑でエラーが発生しやすいものです。ChatGPT は、より自然な対話方法をユーザーに提供し、ユーザーが日常言語を使用してクエリを実行し、クエリ要件を SQL ステートメントに変換し、クエリ操作を実行できるようにします。この方法はより便利であり、ユーザーがクエリの効率と精度を向上させるのにも役立ちます。したがって、ChatGPT を使用して SQL を生成すると、ユーザーはデータベース クエリとデータ分析のニーズをすぐに認識し、作業の効率と精度を向上させることができます。

3.1 単純なケース

最も売上が高い製品とそれに対応する売上をクエリする必要がある販売会社があるとします。会社のデータベースには製品テーブル (Product) と注文テーブル (Orders) という 2 つのテーブルがあり、それらの間には製品番号 (ProductId) を通じて 1 対多の関係が確立されています。ここで、会社の営業マネージャーは、売上高の上位 5 つの製品と、それに対応する売上高を照会したいと考えています。このクエリを実装するには、ChatGPT を使用して SQL ステートメントを生成できます。
まず、営業マネージャーは ChatGPT に次の自然言語クエリを提供できます。

「売上高上位 5 製品とそれに対応する売上高をクエリする」

ChatGPT は、このクエリを次の SQL ステートメントに変換できます。

SELECT p.ProductName, SUM(o.Quantity * o.UnitPrice) AS SalesAmount
FROM Product p
INNER JOIN Orders o ON p.ProductId = o.ProductId
GROUP BY p.ProductName
ORDER BY SalesAmount DESC
LIMIT 5;

3.2 複雑なケース

たとえば、営業マネージャーが、2021 年の第 1 四半期 (1 月 1 日から 3 月 31 日) に売上高の上位 5 つの製品と、それに対応する売上高および販売量をクエリする必要があるとします。このクエリを実現するには、より詳細かつ正確な自然言語記述を ChatGPT に提供する必要があります。

「2021 年の第 1 四半期 (1 月 1 日から 3 月 31 日) に売上高の上位 5 つの製品と、それに対応する売上高および販売数量をクエリします。注文テーブル (Orders) には、注文作成日 (OrderDate) フィールド、注文ステータスが含まれています。 (Status) フィールド、製品テーブル (Product) には、製品名 (ProductName) フィールド、製品単価 (UnitPrice) フィールド、および製品数量 (Quantity) フィールドが含まれます。

ChatGPT は、このクエリを次の SQL ステートメントに変換できます。

SELECT p.ProductName, SUM(o.Quantity) AS SalesQuantity, SUM(o.Quantity * o.UnitPrice) AS SalesAmount
FROM Product p
INNER JOIN Orders o ON p.ProductId = o.ProductId
WHERE o.OrderDate BETWEEN '2021-01-01' AND '2021-03-31' AND o.Status = 'Completed'
GROUP BY p.ProductName
ORDER BY SalesAmount DESC
LIMIT 5;

4. まとめ

データウェアハウスのモデリング理論を習得することが非常に必要です。

各指数の計算は、多くの場合、指数の検討 -> モデルの確立 -> 指数の開発を経て行われます

データ ウェアハウスの開発はプロセス形式で実行されます。

次に、SQL の記述です。単純な SQL であっても複雑な SQL であっても、GPT を使用して記述できます。

たとえ完璧ではなくても、プロンプトの単語を修正すれば、基本的な SQL コードのフレームワークが得られると思います。

ChatGPT は、ユーザーが提供した自然言語クエリに従って、対応する SQL ステートメントを自動的に生成できるため、データ クエリと分析のプロセスが簡素化されます。

ただし、次の点に注意する必要があります。

  • 1. 生成された SQL ステートメントの正確性と信頼性を確保するために、ユーザーは明確、簡潔、正確な自然言語記述、データ テーブル構造および関連フィールド情報を提供する必要があります。
  • 2. ChatGPT によって生成される SQL ステートメントの精度と精度は、モデルのトレーニング データとアルゴリズムの影響を受けます。したがって、ChatGPT を使用して SQL ステートメントを生成する場合は、結果の正確性と信頼性を確保するために必要なチェックと検証が必要です。
  • 3. ChatGPT は、ユーザーが簡単な SQL ステートメントを迅速に生成するのに役立ちますが、複雑なクエリ要件を扱う場合は、ユーザーの参加とさらなる変更と最適化が必要になる場合があります。
  • 4. ChatGPT の出現により、データのクエリと分析がより便利になり、自動化されましたが、人工知能テクノロジーが人間の作業を完全に置き換えることができるという意味ではありません。実際の作業では、プログラマーは、データ分析とクエリの正確性と信頼性を確保するために、SQL 構文とデータベース管理スキルを習得する必要があります。

つまり、ChatGPT は SQL ステートメントを迅速に生成するのに役立ち、それによってデータのクエリと分析のプロセスを簡素化します。ただし、ChatGPT を使用して SQL ステートメントを生成する場合は、結果の正確さと信頼性を確保するために、自然言語記述の正確さとデータ テーブル構造の明瞭さを確保するように注意する必要があります。

同時に、変化する市場の需要に適応するために、SQL 文法とデータベース管理スキルを学び続け、改善し続ける必要もあります。

おすすめ

転載: blog.csdn.net/shujuelin/article/details/131641297
おすすめ