参加します SAP HANA:種類、構文、および例
⚡ スマートサマリー
SAP HANAは接続テーブルと情報ビューを結合することで、レポートに必要な行のみをモデルが正確に返します。内部型、外部型、参照型、テキスト型、時間型、空間型といった型によって、パフォーマンス、カーディナリティの処理、結果サイズがそれぞれ異なります。

何ですか SAP HANAに参加しますか?
参加する SAP HANAは、2つ以上のテーブル、またはテーブルと情報ビューから行を結合し、クエリに必要な値を返します。結合は、情報ビューの結合ノードでグラフィカルに定義されるほか、データベース上で実行されるSQL文に直接記述することもできます。
2 つの形式は同一ではありません。 計算ビュー によって実行されます SAP HANA 計算エンジンは、要求された列がテーブルから来ていない場合はテーブルをスキップできますが、 SAP HANASQL について 常にコードどおりに正確に実行されます。
以下の結合タイプが利用可能です SAP HANAテーブルと情報ビューが統合されています。
| 結合タイプ | あなたが使用します | コメント |
|---|---|---|
| INNER | 内部結合は、両方のテーブルで一致するレコードのセットを選択します。 | 両隣にパートナーがいない列は破棄される。 |
| 左外部結合 | 左外部結合は、最初のテーブルからレコードの全セットを選択し、2番目のテーブルから一致するレコードが存在する場合は、そのレコードを追加します。 | 2番目のテーブルに一致する項目が存在しない場合、その列にはnull値が返されます。 |
| 右外部結合 | 右外部結合は、2 番目のテーブルからレコードの完全なセットを選択し、1 番目のテーブルから対応するレコードが存在する場合は、それとレコードを追加します。 | 最初のテーブルに一致する項目が存在しない場合、その列にはnull値が返されます。 |
| 完全外部結合 | フル外部結合は、両方のテーブルからすべてのレコードを選択します。 | 両側の行のうち、一致しない行はnull値で埋められます。 |
| 参照結合 | 2つのテーブル間で参照整合性が維持されていることを前提として、内部結合のように動作します。 | 属性ビュー、分析ビュー、計算ビューの結合ノードで利用可能です。 |
| テキスト結合 | テキスト結合は、テキストテーブルの言語列を使用して、キーに属する言語固有の説明を選択します。 | 言語列(通常はSPRAS)は、結合プロパティでフラグ付けする必要があります。 |
参照結合とテキスト結合はモデリング専用のタイプです。これらは情報ビューの結合ノードに存在し、SQL には同等のキーワードがないため、次のようになります。 SAP HANAモデリング SELECT文ではなく、ツールを使用します。
SAP HANAの結合構文とSQLの例
内部結合と外部結合は次のように記述されます SAP HANA SQLは標準ANSI構文を使用しているため、他のリレーショナルデータベースでテストされたクエリは通常、変更せずに実行できます。以下の例では、販売注文テーブルを顧客テーブルに、そして州テーブルに結合しています。
SELECT so.ORDER_ID, c.NAME, s.STATE_NAME, so.AMOUNT FROM SALES_ORDER AS so INNER JOIN CUSTOMER AS c ON so.CUSTOMER_ID = c.CUSTOMER_ID LEFT OUTER JOIN STATE AS s ON c.STATE_CODE = s.STATE_CODE WHERE so.AMOUNT > 1000 ORDER BY so.ORDER_ID;
内部結合では、顧客マスタレコードが欠落しているすべての販売注文が削除されます。左外部結合では、州コードに説明がない場合でも残りのすべての注文が保持され、それらの行に対してnullの州名が返されます。スワップping したがって、2種類の結合タイプは、表示される列だけでなく、行数も変更します。
グラフィカルモデルは、SQL を使用せずに同じ結果を得ます。ビュー エディターで 2 つのデータ ソースの間に結合ノードを配置し、結合条件を構成する列をマッピングし、ノード プロパティで結合タイプとカーディナリティを設定します。 SAP ハナスタジオ エディタとブラウザベースのモデラーはどちらも、これらの設定から実行時SQLを生成します。
高度な結合タイプ SAP HANA計算ビュー
計算ビューは、通常のSQLでは単一のキーワードでは表現できない結合動作を追加します。これらのオプションは、結合ノードまたは専用のノードタイプを通じて構成されます。
| 結合タイプ | 何それがありません | 典型的な使用 |
|---|---|---|
| 時間的結合 | マスターデータソースの「開始」フィールドと「終了」フィールドを使用して、トランザクションレコードを、指定された日付に有効だったマスターデータバージョンと照合します。 | 所有者が変更されたコストセンターなど、時間依存のマスタデータ。結合タイプは参照型である必要があり、キーは日付、タイムスタンプ、または整数である必要があります。 |
| 空間結合 | 等号条件ではなく、交差や内部などの空間述語を使用して、ジオメトリ列上の 2 つのソースを結合します。 | 例えば、顧客の所在地と販売地域を照合するなど、地理的な分析を行う。 |
| 動的結合 | クエリが実際に要求する結合列から実行時に結合条件を構築し、結合が実行される前に残りの列を集計します。 | クエリの粒度が異なる複数列結合。少なくとも1つの結合列を指定する必要があります。指定しない場合、クエリは失敗します。 |
| スターが参加 | 1つのファクトソースを複数のディメンション計算ビューに単一のノードで結合します。 | 従来の分析ビューに代わるスター型スキーマモデル。 |
動的結合は、マッチングルールではなく、操作の順序を変更します。静的結合では、定義されたすべての列が条件に関与し、その後集計が行われます。一方、動的結合では、要求されていない列が最初に集計されるため、通常は行数が少なくなり、合計値も異なります。したがって、この2つは異なるビジネス上の疑問に答えるため、このフラグは一般的な最適化としてではなく、意図的に設定されます。
適切な結合タイプの選択方法 SAP HANAモデリング
結合の選択は正確性と実行時間の両方に影響し、最も速い結合は SAP HANAは実行する必要は一切ありません。以下のルールは、ほとんどのモデリング上の決定事項を網羅しています。
- 参照結合 — 片側のすべての行に必ずパートナーが存在することが保証されている場合にのみ使用してください。結合されたテーブルから列が要求されない場合、エンジンは結合を完全に省略する可能性があります。
- 内部結合 参照整合性が保証されておらず、一致しない行を除外する必要がある場合に使用します。
- 左外部結合 — 最初のテーブルが結果を決定づけ、かつ不足しているマスターデータも表示する必要がある場合に使用します。
- 完全外部結合 これは最も高価なオプションであり、レポートモデルで必要とされることは稀であるため、使用は控えめにしてください。
- テキスト結合 — 説明列がログオン言語に依存する場合は、必ずこれを使用してください。
2つのノードプロパティは、結合タイプ自体と同じくらい重要です。カーディナリティ(1:1、1:n、n:1、またはn:m)は、エンジンに各サイドで何行を期待するかを伝え、提案カーディナリティ関数はデータからそれを導き出します。その後、結合列の最適化フラグによって、 SAP HANAは、クエリで要求されていない結合列を実行計画から削除します。誤ったカーディナリティは、知らず知らずのうちにメジャーを増幅させてしまう可能性があるため、仮定するのではなくデータに対して検証されます。
新たな開発を形作るもう1つの制約があります。属性ビューと分析ビューは非推奨となり、 SAP グラフィカル計算ビューに変換することを推奨しているため、今日設計される結合は通常、計算ビュー結合またはスター結合ノードで構築されます。古いオブジェクトの背景は、既存のモデルが維持されている場合に依然として役立ちます。 属性ビュー (NAIST) と 分析的視点 ページには、それらの結合がどのように構成されたかが説明されています。 SAP 学習教材 ノードを結合する 同じ動作をカバーしています SAP HANA Cloud、そしてより広範な SAP HANAチュートリアル 本シリーズでは、情報ビューがプラットフォーム内でどのような位置づけにあるのかを解説します。
