参加します SAP HANA:種類、構文、および例

⚡ スマートサマリー

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

  • 🔗 範囲: グラフィカルモデル内およびデータベース上の通常のSQL文内で、リンクテーブルと情報ビューを結合します。
  • ☑️ 標準タイプ: 内部結合、左外部結合、右外部結合、および完全外部結合は、ANSI SQL とまったく同じように動作します。
  • モデリング専用の型: 参照結合とテキスト結合は情報ビュー内でのみ存在し、SQLキーワードに相当するものはありません。
  • 🧪 高度なノード: 時間的、空間的、動的、およびスター結合は、単純な列のマッチングを超えて計算ビューを拡張します。
  • 🛠️ パフォーマンス向上の鍵となる要素: カーディナリティと結合列の最適化フラグによって、 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チュートリアル 本シリーズでは、情報ビューがプラットフォーム内でどのような位置づけにあるのかを解説します。

よくあるご質問

カーディナリティ(1:1、1:n、n:1、n:m)は、エンジンに各サイドで一致する行がいくつあるかを指示します。これにより、結合の枝刈りが可能になり、集計が保護されます。提案カーディナリティはデータから設定を導き出すため、推測するよりも安全です。

それはできます SAP HANAは、クライアントクエリで要求されない結合列を実行プランから削除します。ping実行時間は短縮されますが、削除された列が集計レベルに影響を与えていた場合は結果が変わる可能性があります。

既存のオブジェクトは引き続き動作しますが、どちらのビュータイプも非推奨となり、新しい計算ビューに追加することはできません。 SAP それらをグラフィカル計算ビューに変換することをお勧めします。グラフィカル計算ビューでは、同じ結合タイプに加えて、スター結合と空間結合が利用できます。

両側の一致しない行を保持する必要があるため、テーブルは削除されず、すべての行が具体化されます。一方、参照結合は、クエリが結合テーブルから列を要求しない場合は完全にスキップされることがあります。

テキストテーブルの言語列(通常はSPRAS) SAP テーブルは、結合プロパティでフラグが立てられています。 SAP HANAはセッション言語に基づいて説明をフィルタリングするため、個別のビューを用意することなく、1つのモデルですべてのログオン言語に対応できます。

はい。結合ノードは、テーブル、テーブル関数、その他の計算ビューをデータソースとして受け入れます。ディメンションビューをファクトテーブルに接続するのは、この方法です。結合条件で列が明示的にマッピングされるため、列名は異なる場合があります。

機械学習は列の値をプロファイリングして結合キーとカーディナリティを提案し、結合後にメジャーが膨張するモデルにフラグを立て、ほぼ重複するビューをクラスタリングします。 SAP また、プラットフォームに予測サービスと生成サービスが組み込まれているため、スコアリングはモデル化されたデータと並行して実行されます。

Copilotは標準的なSQL結合を適切に生成し、反復的なSELECT文の処理速度を向上させます。ただし、スキーマの参照整合性を認識しないため、結合タイプ、カーディナリティ、およびテキスト結合などのモデリング専用オプションについては、実際のデータと照らし合わせて確認する必要があります。