OLAPとOLTP
-
OLAP(オンライン分析プロセス)、オンライン分析および処理、データを多次元で分析し、ロールアップ、ドリルダウン、およびパースペクティブ分析操作を柔軟に提供できます。統合された意思決定情報を提示する方法は、主に意思決定支援システム、ビジネスインテリジェンス、またはデータウェアハウスで使用されます。その主な機能は、大規模なデータ分析と統計計算を容易にすることであり、意思決定のための参照とサポートを提供できます。多くの場合、OLAPは多次元分析およびキューブ計算に基づく分析に関連しています。
-
OLTP(オンライントランザクション処理)は、データの追加、削除、変更など、基本的な日常のトランザクション処理に重点を置いています。
BI
BI(ビジネスインテリジェンス)、つまりビジネスインテリジェンスとは、最新のデータウェアハウステクノロジー、オンライン分析テクノロジー、データマイニング、およびデータ分析のためのデータプレゼンテーションテクノロジーを使用してビジネス価値を達成することを指します。
次元
-
次元とは、データの視点を指し、これは通常、時間や場所などのデータレコードの属性です。
測る
-
メトリックは、データに基づいて計算された計算値であり、通常は合計売上高やさまざまなユーザー数などの数値です。
-
多くの場合、アナリストはいくつかのディメンションを組み合わせて、メトリック値の変化を見つけるためにメトリック値を確認する必要があります。SQLクエリでは、groupByの属性は通常ディメンションであり、計算値はメジャーです。
-
select time,location,sum(gmv)as gmv from sales group by time,location
-
上記のクエリでは、時間と場所はディメンションであり、合計(gmv)はメトリックです
立方体とキューブ
-
データモデルを指定すると、そのモデルのすべてのディメンションを組み合わせることができます。N次元の場合、組み合わせのすべての可能性が2 ^ N種類あります。ディメンションの組み合わせごとに、測定値が集計され、操作の結果がCuboidと呼ばれるマテリアライズドビューとして保存されます。
-
全体として結合されたすべての次元の立方体は、キューブと呼ばれます。
-
簡単に言うと、キューブは、ディメンション、つまりデータキューブによって集約された多くのマテリアライズドビューのコレクションです。これは、データ分析とインデックス作成に一般的に使用される手法であり、元のデータに多次元インデックスを確立できます。Cubeを介したデータの分析により、データクエリの効率が大幅に向上します。
ファクトテーブル
-
ファクトテーブル(ファクトテーブル)は、システムログ、販売レコードなどのファクトレコードを格納するテーブルを指します。ファクトテーブルのレコードは絶えず動的に増加しているため、通常、そのサイズは他のテーブルよりもはるかに大きくなります。
寸法表
-
ディメンションテーブルまたはディメンションテーブル(ルックアップテーブルとも呼ばれます)は、ファクトテーブルに対応するテーブルです。これは、ディメンションの属性値を保存し、ファクトテーブルに関連付けることができます。これは、ファクトと同等です。テーブルに頻繁に現れる属性の抽出と標準化は、テーブルで管理されます
-
一般的なディメンションテーブルは次のとおりです:日付テーブル(日付、週、月、四半期などに対応する属性を格納します)、場所テーブル(国、州/州、都市などの属性を含む)
-
ディメンションテーブルの利点:
-
ファクトテーブルのサイズを縮小
-
ファクトテーブルの多数のレコードを変更せずに、ディメンションの管理とメンテナンス、ディメンション属性の追加、削除、変更を容易にします。
-
ディメンションテーブルを複数のファクトテーブルに再利用して、作業の重複を減らすことができます。
スターモデル
-
スターモデルにはファクトテーブルと0個以上のディメンションテーブルがあり、ファクトテーブルとディメンションテーブルは主キーの外部キーによって関連付けられています。スターの周りの多くの星のように、ディメンションテーブル間には関係がありません。スターモデルです。
-
コンスタレーションモデルは、複数のファクトテーブルを含むより複雑なモデルであり、ディメンションテーブルは一般的であり、共有できます。
-
スターモデルは、最も単純で最も一般的に使用されるモデルです。
-
スターモデルのいくつかの次元のテーブルを標準化し、それらをより細かい次元テーブルに抽出してから、次元テーブルを関連付ける場合、このモデルはスノーフレークモデルと呼ばれます。
寸法表の設計
-
データの整合性を保つには、主キーが一意である必要があります。
-
ディメンションテーブルが小さいほど良いです。kylinはクエリのためにディメンションテーブルをメモリにロードするため、大きすぎるテーブルはディメンションテーブルとして適していないため、デフォルトのしきい値は300Mbです。
-
変更の頻度は低いです。Kylinは各ビルドでディメンションテーブルのスナップショットを再利用しようとします。ディメンションテーブルが頻繁に変更される場合、再利用は失敗し、その結果、ディメンションテーブルのスナップショットが作成されます。
-
ディメンションテーブルはHiveビュー(ビュー)ではないことが望ましいです。ディメンションテーブルがビューである場合のサポートは、Kylin 1.5.3で追加されましたが、ビューを毎回実体化する必要があるため、追加の時間オーバーヘッドが発生します。
ハイブテーブルパーティション
-
Hiveテーブルは複数のパーティションをサポートします(パーティション)
-
クエリでパーティション列の属性条件が指定されている場合、Hiveは特定のパーティション(つまり、ディレクトリ)を選択するため、完全なデータのスキャンが回避され、読み取りおよび書き込み操作によるクラスターへの負荷が軽減されます。
-
Hive > create table tb(id int,name string)
-
Hive > partitioned by (ds string) row format delimited fields terminated by 't' stored as textfile;
-
Hive > load data local inpath '/user/hadoop/data.txt' overwrite into tb partition (ds = '20190529');
-
Hive > select * from tb where ds = '20190529';
次元の基数
-
ディメンションのカーディナリティとは、データセットにディメンションが表示されるさまざまな値の数を指します。たとえば、「国」はディメンションです。200の異なる値がある場合、このディメンションのカーディナリティは200です。
-
通常、ディメンションのカーディナリティは数十から数万の範囲であり、「ユーザーID」などの個々のディメンションのカーディナリティは100万または1千万を超えます。カーディナリティが100万を超えるディメンションは、しばしば超高カーディナリティディメンションと呼ばれ、設計者の注意を引く必要があります。
-
キューブ内のすべてのディメンションのカーディナリティは、キューブの複雑さを反映している可能性があります。いくつかの超高カーディナリティディメンションがある場合、キューブの拡張の確率は非常に高くなります。
-
カーディナリティを計算する簡単な方法は
count distinct
、hive Sqlでコマンド操作を実行することです。
デザインキューブ
-
Hiveテーブルのインポート
-
データモデルを作成する(ディメンションとメジャーの列を選択)
-
ディメンション列を選択する場合、ディメンションはファクトテーブルまたはディメンションテーブルから取得できます
-
メジャー列を選択する場合、メジャーはファクトテーブルからのみ取得できます