投影フレームワーク

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

プロジェクションフレームワークは、ソースデータを表形式に変換する流暢なAPIであり、キーでデータをグループ化する機能も含まれています。プロジェクションフレームワークはプロジェクションワーカーの文脈で利用可能で、デフォルトでプロジェクションデータをCortex処理ストレージデータベースに保存します。

鍵、属性、そして指標

投影には少なくとも1つのキー、オプション属性、オプションの指標が含まれます。

  • キーは行を一意に識別し、ソースデータのグループ化方法を決定します。複合キーもサポートされています。ソースデータが連絡先のリストであると仮定すると、キーの例は以下の通りです:
    • 連絡先ID。このキーは連絡先ごとに一意であり、結果として得られる行はグループ化されません。
    • 職種名と生年の組み合わせです。このキーは連絡先ごとに一意であることはおそらくなく、結果として行はグループ化されます。
  • 属性 はキー に関する追加データを表します:
    • キーがコンタクトIDであれば、そのコンタクトの総エンゲージメント値を属性として出力することができます。
    • キーは職種名と生年の組み合わせなので、平均初任給を属性として返すメソッドを呼び出すこともできます。
  • 指標とは、計算が可能なキーの特性です。指標は、予測がソースデータセットを縮小した場合にのみ意味を持ちます。例えば、職種ごとにグループ化された40件の連絡先のソースリストは6行になることがあります。この場合、次のようになることがあります:
    • .Measure("Count", x => 1)を使って、各職種名を持つ連絡先の数を返してください。
    • .Measure("YearsOfExperience", c => c.CareerFacet().YearsOfExperience)を使って、各職種の連絡先が示す総経験年数を返します。

以下のコンタクトプロジェクションの例は、出生年ごとにコンタクトをグループ化し、指標と属性を含みます。

// Syntax example only Projection = Engine.Projection.Projection.Of<XConnect.Contact>().CreateTabular( nameof(Model1_ContactProjection), Expansion, cfg => cfg .Key("BirthYear", c => c.Personal().Birthdate.Year.ToString()) .Attribute("IsLeapYear", c => DateTime.IsLeapYear(c.Personal().Birthdate.Year)) .Measure("NumberOfContactsInYear", c => 1)

グループ化なしの射影

以下のサンプル投影は、連絡先IDで行をグループ化し、各連絡先の職種名と識別子数を出力します。

// Syntax example only Projection = Engine.Projection.Projection.Of().CreateTabular( nameof(ProjectionOnlyModel), cfg => cfg .Key("ContactID", c => c.Id) .Attribute("IdentifierCount", c => c.Identifiers.Count) .Attribute("JobTitle", c=> c.Personal().JobTitle));

3つの接点からなるサンプルセットは以下の出力を得ます。

連絡先ID

識別子カウント

職種

A3102A8C-ED77-492B-B447-4B6A0DF3C412

3

プログラマー・ライター

C35556DA-17DC-476A-98D5-56DF981E4529

2

開発者

0600F5a2-4491-491e-b568-be09a8d801fe

5

ジュニア開発者

この例では一意の接点IDをキーとして使用しており、データセットは縮小されていません。ソースデータセット内の接点数と、予測テーブル内の行数との間には1対1の関係があります。このようなシナリオでは:

  • Measure()は使わないでください。ソースデータセット内のすべての接点IDは一意であり、データセット自体が削減されることはありません。Measureを使うと不要なパフォーマンスオーバーヘッドが生じます。

!警告プロジェクションに連絡先IDを含める際は注意してください。連絡先IDはxDB内の連絡先を一意に識別し、連絡先が忘れられる権利を行使しても削除されません。また、xDBの外に永続化してはいけません。投影データは設定可能な間隔でCortex処理ストレージデータベースから削除されます。

グループ化による射影

以下のサンプル予測は、接触者、出生年、職種ごとに行をグループ化し、各行のカウントを出力します。

// Syntax example only Projection = Engine.Projection.Projection.Of<XConnect.Contact>().CreateTabular( nameof(Model1_ContactProjection), Expansion, cfg => cfg .Key("BirthYear", c => c.Personal().Birthdate.Year.ToString()) .Key("JobTitle", c => c.Personal().JobTitle) .Measure("YearsExperience", c=> c.CareerInfo().YearsExperience) // Sample facet; int .Measure("Count", x => 1));

4つの生年と3つの職種名にまたがる17件のコンタクトのサンプルセットは、以下の出力を得られます。

生年

職種

伯爵

経験年数

1987

プログラマー・ライター

1

10

1987

開発者

5

50

1972

開発者

10

92

1990

ジュニア開発者

1

3

この例は、連絡先の出生年と職種からなる複合キーを使用し、データセットは縮小されています。このようなシナリオでは:

  • Measure()を必ずご利用ください。この例には以下が含まれます:
    • 各グループ内の接触者数の合計です。
    • グループが代表する総職歴年数。
この記事を改善するための提案がある場合は、 お知らせください!