Using Range Tables

Objectives

After completing this lesson, you will be able to:
  • 範囲テーブルクラスを登録します。
  • 範囲テーブルを登録します。
  • 範囲テーブルにデータを入力します。
  • 範囲テーブルクラスと範囲テーブルの違いについて説明します。
  • 価格プランで範囲テーブルを使用します。

範囲テーブルの概要

数値間隔を処理する場合、マッピングテーブルは役に立ちません。重量間隔が異なるパッケージに異なる価格を割り当てるとします。最初に構成品目で間隔を決定し、間隔が既知の場合は、マッピングテーブルにアクセスし、そこから価格を取得する必要があります。

範囲テーブルでは、テーブル自体内の数値間隔の処理がサポートされています。これらのテーブルを使用して、加重範囲またはパッケージをテーブルで定義し、間隔ごとに異なる価格を割り当てることができます。これがどのように機能するかを見てみましょう。

範囲テーブルクラス

マッピングテーブルと同様に、範囲テーブルの構造はその内容とは別に定義されます。入力列と出力列、および出力列のデータ型は、いわゆる "範囲テーブルクラス" で定義されます。範囲テーブルクラスは、以下で構成されています。

  • 数値間隔の上限が間隔の一部とみなされるか ("包含")、考慮されないか ("除外") を決定します。
  • 最後の間隔の上限が "バインド済み" か "バインドなし" かを決定します。
  • "string" データ型の入力列が 0 ~ 5
  • "string"、"Single Number"、"Cumulative Number"、または "Range Size Cumulative Number" の 1 ~ 15 の出力列

以下の図は、コアツールにおける範囲テーブルクラスを示しています。

コアツールにおける範囲テーブルクラスの例。

数値出力値には 4 つのデータ型があります。

文字列

このデータ型には、出力として文字列のみが含まれています。この目的は、文字列プロパティが以下の形式の番号間隔に関連付けられている使用ケースをサポートすることです。

  • 重量が 0 を超え、1 kg までの梱包には、重量クラス "ライト" が割り当てられます。
  • 重量が 1 kg を超え、3 kg までの梱包には、重量クラス "中" が割り当てられます。
  • 重量が 3 kg を超え、20 kg 以下の梱包には、重量クラス "重量" が割り当てられます。
単一番号

このデータ型は、出力として単一の数値を提供します。これは、特定の重量クラスに分類されるパッケージの価格になります。この目的は、価格が以下の形式で定義されているユースケースをサポートすることです。

  • 重量が 0 を超え、1 kg までの梱包コスト 12 ユーロ
  • 重量が 1 kg を超え、3 kg までが 15 ユーロの梱包
  • 重量が 3 kg を超え、20 kg までの梱包コスト 25 ユーロ
累積番号

累積数値プロパティでは、指定された数値が重複している間隔の番号が合計されます。通常、重量が分類される範囲は除外されます。この目的は、価格が以下の形式で定義されているユースケースをサポートすることです。

  • 梱包の最初の kg は 12 ユーロ
  • 次の 2 kg のコストは 3、- € です。
  • 次の 17 kg のコストは 10 ユーロ
範囲サイズ累積番号

このデータ型は、値によって影響を受ける間隔を間隔と比較するため、"累積数" データ型に似ています。ただし、すべての価格の合計に加えて、影響を受けるすべての間隔の範囲サイズも考慮されます。

この目的は、価格が以下の形式で定義されているユースケースをサポートすることです。

  • 最初の kg のコストは、1 kg あたり 6 ユーロ
  • 次の 2 kg のコストは、1 kg あたり 1,50 € です。
  • 次の 17 kg のコストは、1 kg あたり 2、- € です。

範囲テーブル登録

範囲テーブルイントロデューサの設定

範囲テーブルイントロデューサの設定は、マッピングテーブルからの読込に使用された設定と同じです。最初に、範囲テーブルクラスを選択する必要があります。クラスにより、プロパティにマッピングする必要がある入力列が定義されます。

範囲テーブルイントロデューサの設定

上記の図に関連する関数には、以下の番号が付けられています。

  1. 範囲テーブルクラスが選択されると、実行時に特定の範囲テーブル ID をパラメータから読み込んだり、設計時に特定のテーブル選択として提供したりすることができます。
  2. 参照日付は、テーブルの時系列から適切なテーブルバージョンを選択するための日付です。テーブルバージョンは、常に参照日付によって示される日時に有効なバージョンです。
  3. 範囲入力プロパティは、範囲テーブルに渡す値を含む数値プロパティです。この値は、テーブル間隔と比較され、正しい間隔を選択して出力値を誘導します。
  4. "入力プロパティのマッピング" セクションでは、マッピングテーブルイントロデューサからわかるのと同様に、データ型互換プロパティがテーブルの各入力列に割り当てられるように要求されます。

出力プロパティについては、マッピングテーブルイントロデューサに大きな違いがあることがわかります。出力プロパティを持つ 2 つのテーブルがあります。

  • "生成されたプロパティのマッピング" というラベルが付いた上部のテーブルには、範囲テーブルクラスで出力列として定義したすべての列が一覧表示されます。
  • ここでの違いは、各行/出力プロパティの末尾に 2 つのセルがあることです。各セルでは、出力値が書き込まれるプロパティ名を入力する必要があります。では、1 つの出力値を計算するだけの場合の 2 つの出力プロパティ名があるのはなぜですか。

出力プロパティのデータ型に応じて、2 つの出力プロパティ名のうち 1 つのみが問題になります。出力プロパティで使用可能な各データ型に応じて、2 つの出力プロパティ名の内容を見てみましょう。

範囲テーブルへのデータ入力

単一番号

出力プロパティデータ型として Single Number を選択した場合、最初の列 Generated Property Name のみが使用可能です。2 番目の列 Generated Cumulative Property Name に値を入力することはできません。単一数値データ型の範囲テーブル出力列では、数値プロパティによって決定された範囲テーブル列の出力値のみが提供されるため、累積的に計算された値を含むプロパティ名を定義しても意味がありません。そのため、2 番目の列は無効になります。

サンプル

さまざまな出力列のデータ型について上記の例を覚えておき、対応する例を構築しましょう。単一数値出力プロパティに対して以下の範囲が定義されているとします。

単一番号出力プロパティに対して定義された範囲 (例 1)

加重範囲パッケージ価格 (単一数値)
[0;1]12
[1;3]15
[3;20]25

7 kg の数値梱包重量がコンパレータコンポーネントに渡されると、7 の数量は 3 から 20 であるため、単一番号プロパティの結果は 25 になります。これ以上の計算は行われません。その結果、列 Generated Property Name にプロパティ名のみを入力します。ここで、名称価格が入力されました。この例では、パッケージ加重を範囲テーブルと比較した後、値 25 を含む Price というプロパティを使用することができます。累積計算が行われないため、列生成累積プロパティ名は使用できません。

例、ステップ 1

累計番号

パッケージ価格が少し異なるとします。パッケージ価格が重量間隔ごとに定義されるようになりました。

  • 梱包の最初の kg は 12 ユーロ
  • 次の 2 kg のコストは 3、- € です。
  • 次の 17 kg のコストは 10 ユーロ

テーブルは以下のようになります (出力列のデータ型の変更に注意してください)。

単一番号出力プロパティに対して定義された範囲 (例 2)

加重範囲パッケージ価格 (単一数値)
[0;1]12
[1;3]3
[3;20]10

計算対象の累計値があります。両方の出力プロパティ名を設定できるようになりました。

例、ステップ 2

ここでは、[生成されたプロパティ名] フィールドは [価格] に設定され、[生成された累積プロパティ名] は [累計価格] に設定されます。その結果、SAP Convergent Charging では値が異なる 2 つのプロパティが登録されます。加重値 7kg をテーブルコンパレータに再度送信するとします。範囲テーブル比較後、1 つのプロパティではなく、2 つの新しいプロパティを使用することができます。

  • 累積価格プロパティには、値 15 が含まれます。数量によって該当した間隔が決定されます。ここでは 3 番目の間隔です。次に、該当した間隔より前のすべての間隔の出力列値が合計されます。ここでは、1 番目と 2 番目の間隔の列値 (12 + 3 = 15) を示します。
  • プロパティ Price には、コンパレータに送信したパッケージ加重による間隔ヒットで見つかった価格が引き続き含まれます。加重値は 7 であるため、3 番目の間隔がヒットします。これは 10 の価格に関連付けられています。したがって、プロパティ Price の値は 10 になります。

両方の出力プロパティは、請求する合計価格 (15 + 10 = 25) を取得するために引き続き一緒に追加する必要があります。

範囲サイズ累積番号

価格が間隔ごとに異なるものの、重量間隔ごとではなく kg ごとに指定されると仮定します。

  • 最初の kg のコストは、1 kg あたり 6 ユーロ
  • 次の 2 kg のコストは、1 kg あたり 1,50 € です。
  • 次の 17 kg のコストは、1 kg あたり 2、- € です。

結果の範囲テーブルは以下のようになります (出力データ型も変更されています)。

単一番号出力プロパティに対して定義された範囲 (例 3)

加重範囲パッケージ価格 (単一数値)
] 0;1]6
] 1;3]1.5
] 3;20]2

ここでも、両方の出力プロパティ名を設定する必要があります。ここでは、前の例と同じ名称が選択されています。ただし、生成されたプロパティには任意の名前を指定できることに注意してください。

例、ステップ 3

7 kg の値がテーブルに再度渡され、3 番目の間隔が再度ヒットします。生成された両方のプロパティ名を設定する必要があるため、以下の 2 つの出力プロパティが計算されます。

  • プロパティ "累積価格" では、範囲テーブルに渡された番号による間隔ヒットより前のすべての間隔が決定されます。番号 7 は 3 番目の間隔がヒットしたことを示すため、1 番目と 2 番目の間隔が選択されます。
  • これらの間隔ごとではなく、出力列値に間隔サイズが乗算されます。最初の間隔では、これはを意味します。
  • 2 番目の間隔では、これは以下を意味します。
  • 次に、これらの製品の合計が計算されます。
  • したがって、プロパティ "累積価格" には値 9 が含まれます。
  • プロパティ "価格" の場合、値は範囲テーブルに渡される数値によって検出された間隔の出力値になります。値が 7 であるため、3 番目の間隔がヒットします。出力値は 2 であるため、プロパティ "Price" の値は 2 です。

結果を見ると、まだなかなか目的の結果が見当たらない。価格は以下のように機能することになっていました。

  • 最初の kg のコストは、1 kg あたり 6 ユーロ
  • 次の 2 kg のコストは、1 kg あたり 1,50 € です。
  • 次の 17 kg のコストは、1 kg あたり 2、- € です。

このロジックに従って、梱包重量は 7 kg になります。

  1. 6 ユーロ (最初の kg)
  2. 次の 2 kg は 3 ユーロ (各 kg は 1,50 € になります)
  3. 残りの 4 kg は 8 ユーロ (各 kg は 2 ユーロになります)。

合計は 17 ユーロまでです。

範囲テーブル比較は、プロパティ "累積価格" の場合は 9、プロパティ "価格" の場合は 2 でした。合計は 11 ユーロであるため、最後の間隔では数量が考慮されないため、明らかに 6 ユーロ (€) が欠けています。で、何が欠落していますか?

ここでは、Computed Properties というラベルの下部のテーブルが重要になります。

各範囲テーブルイントロデューサでは、範囲テーブルで提供される出力列に関係なく、標準プロパティのセットが登録されます。これらのプロパティは、ユーザに柔軟性をもたらすため、ここに挙げたもの以外のさまざまな価格計算モデルをサポートすることができます。以下の表に、これらのプロパティとその意味の説明を示します。そのうちの 1 つが必要です。

プロパティの一覧とその意味の説明

算出値意味
範囲の下限該当範囲の下限を含みます (利用可能な場合)。
範囲の上限該当範囲の上限が含まれます (利用可能な場合)。
範囲サイズ範囲のサイズが含まれます。通常、これは <UPPER_BOUND_OF_RANGE> - <LOWER_BOUND_OF_RANGE> として計算されます。
範囲の日割計算

0 から 1 までの間で変動する係数が含まれます。これは、間隔境界内の数値の相対位置を示します。0 に近い値は、値が下限に近づき、値が 1 に近いことを意味し、値が上限に近づいていることを意味します。

たとえば、

値 17 を範囲 ] 10;20] と比較すると、値は 0,7 になります。これは、 (17-10):(20-10) 以上として計算されます。 (<NUMBER_VALUE> - <LOWER_BOUND_OF_RANGE>) : (<UPPER_BOUND_OF_RANGE> - <LOWER_BOUND_OF_RANGE>

下限を超えた値

これは、数値の下限からの距離です。

たとえば、

値 17 を範囲 ] 10;20] と比較すると、17 ~ 10 は一般的に 7 以上であるため、7 になります。 <NUMBER_VALUE> - <LOWER_BOUND_OF_RANGE>

上限を超えた値

このプロパティには、数値と最後の無制限値の上限の距離が含まれます。その結果、このプロパティは計算できるのはバインドされた範囲テーブルクラスに対してのみです。

たとえば、

値 27 を最後の間隔 ] 10;20] と比較すると、27 – 20 = 7 以上の一般的には 7 になります。 <NUMBER_VALUE> - <UPPER_BOUND_OF_LAST_RANGE >

目的のために、下限を超える値という計算プロパティが必要です。梱包重量が 7 kg の場合、3 番目の間隔がヒットします。下限は 3 です。7 kg と 3 kg の差異は 4 kg です。これらの 4 kg は、間隔の出力プロパティ値 (2 ユーロ) で乗算する必要があります。不足している 8 ユーロまでの 2 ユーロおよび 4 kg の製品

すべての間隔の合計を合計できるようになりました。

  1. 6 ユーロ (最初の kg)
  2. 次の 2 kg は 3 ユーロ (各 kg は 1,50 € になります)
  3. 残りの 4 kg については 8 ユーロ (計算したばかりであるため)

合計は想定どおり 17 ユーロです。

必要に応じて、計算されたプロパティを使用することができます。ただし、すべてのプロパティが各ブランチで利用できるわけではありません。以下の表は、各プロパティを使用できる分岐を示しています。

ブランチおよびプロパティ

  <property> は最初の境界より下です<property> は範囲内<property> 最後の無制限範囲に見つかりました<property> は最後に定義された制限を超えています
 範囲の下限これは 0 です。これは、選択した範囲の下限と等しくなります。これは、選択した範囲の下限と等しくなります。これは、最後の上限と等しくなります。
算出プロパティ範囲の上限これは 0 です。これは、選択した範囲の上限と等しくなります。これは、最後の上限と等しくなります。
範囲サイズこれは 0 です。範囲の上限 - 範囲の下限。これは、最後の上限と等しくなります。
 範囲の日割計算下限を超えた値/範囲サイズ
 下限を超えた値範囲の下限と、適切な範囲の選択に使用される入力プロパティの値との差異範囲の下限と、適切な範囲の選択に使用される入力プロパティの値との差異
 上限を超えた値最後に定義された範囲の上限と入力プロパティの値との差異。

範囲テーブルクラスと範囲テーブル

範囲テーブルの例

各範囲テーブルでは、1 つの数値プロパティのみが管理され、テーブルで定義された間隔のセットと比較されます。追加の入力列は、マッピングテーブルと同様に処理されます。入力列の値の組合せごとに、一連の間隔を指定する必要があります。この例を見てみましょう。

範囲テーブルの例

キログラム単位で測定されたさまざまな重量クラスのパッケージの価格を提供するとします。

価格および重量クラスの境界は、パッケージの送付元の国と、サブスクライバによって選択されたサービスレベルによって異なります。

これを解決するには、2 つの入力列およびサービスレベルを範囲テーブルクラスに追加します。加重は、常に範囲テーブルによって管理される必須の数値であるため、専用の列を追加しないでください。データタイプ「単一数値」の出力列「price」には、重量に基づいて各パッケージに関連付けられた価格が含まれます。

国 "フランス" と "ドイツ"、およびサービスレベル "標準" および "プレミアム" の価格を管理する必要がある場合は、4 つの間隔セット (入力値の組合せごとに 1 つずつ) を更新する必要があります。

テーブル間隔の例

Countryサービスレベル間隔開始間隔終了価格
フランスプレミアム0112
フランスプレミアム1315
フランスプレミアム32025
フランス標準0111
フランス標準1314
フランス標準32022
ドイツプレミアム0111
ドイツプレミアム11014
ドイツプレミアム102024
ドイツ標準0110
ドイツ標準11013
ドイツ標準102021

注記

わかりやすくするために、"currency" 列はここでは省略されています。本稼働シナリオでは、この列を入力列セットにも追加する可能性があります。

システムの例

フランス標準とフランスプレミアムの間隔境界は異なっていませんが、入力列値の組合せごとに 1 回ずつ、システムに 2 回追加する必要があります。上の図は、前の図に示す範囲テーブルクラスに基づいて登録された範囲テーブルを示しています。

出力値テーブルには、上記のテーブルで選択された入力値の組合せに関連する間隔セットのみが表示されることに注意してください。

範囲テーブルには、デフォルトで "有効開始" 日付列と "有効終了" 日付列が含まれていない場合があります。代わりに、各範囲テーブルは時系列で編成されます。つまり、範囲テーブルの内容 (最も小さいものも含む) を変更すると、テーブル履歴に新しい要素が生成されます。テーブルデータ全体が (小さい可能性があるモディフィケーションとともに)、特定の有効開始日付で再度保存されます。この日付は、テーブルを SAP Convergent Charging のデータベースに保存する際に要求されます。

加入者範囲テーブル

マッピングテーブルのサブスクライバ固有のバリエーションがあるのと同様に、範囲テーブルにはサブスクライバ固有のバリエーションがあります。このテーブルデータ型は、バインドされている加入者アカウントにのみアクセス可能であり、他の加入者アカウントからはアクセスできません。そのため、加入者範囲テーブルは、契約個人、顧客個別価格情報、またはその他の顧客/購読者関連データを保存するために役立ちます。

価格計画での範囲テーブルの使用

範囲テーブルに保存されているデータを読み込む場合は、範囲テーブルイントロデューサコンパレータコンポーネントを使用する必要があります。

範囲テーブルイントロデューサ

範囲テーブルイントロデューサコンポーネントには、送信ブランチのセットがあります。以下の分岐は常に利用可能です。

  • <property> 最初の境界より下
  • <property> 範囲内
  • 入力値が見つかりません

範囲テーブルにフィードされた数値プロパティ値の場所に応じて、対応する出力分岐が取得されます。

範囲テーブルクラスの設定に応じて、最後の間隔を処理する追加の送信ブランチが 1 つ利用可能になります。最後の間隔で範囲テーブルクラスを解凍することを選択した場合、4 番目の送信ブランチが呼び出されます。

<property> 最後の無制限範囲で見つかりました

ただし、範囲テーブルクラスがバインドされるように設定する場合、最後の間隔で数値が見つかったのは、"範囲内" で検出した数値と同じです。同時に、ブランチ "<property> Found in Last Unbounded Range" は、無制限の最終範囲がないため意味がありません。そのため、このブランチは以下に置き換えられます。

<property> 最終定義制限を超過

これを以下の表にまとめます。

妥当な設定の概要

支店名最終間隔は無制限です最終間隔はバインドされています
<property> 最初の境界より下
<property> 範囲内
<property> 最後の無制限範囲で見つかりました
<property> 最終定義制限を超過
入力値が見つかりません

範囲テーブルの登録

以下のビデオでは、同僚の Jonathan が SAP Convergent Charging で新しい範囲テーブルクラスを登録する方法を説明します。

Jonathan が範囲テーブルクラスの登録方法を学習したので、Melissa は、登録した新しい範囲テーブルクラスに基づいて範囲テーブルを登録する方法を学習します。クラウド選択サービスの帯域幅利用支援に必要な価格情報を表に記入する。