注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
このページでは、派生プロパティで利用可能な集計と式を一覧で示し、それぞれを使用できる場所とパフォーマンスの比較について説明します。
集計は、多数のリンクされたオブジェクトの値を1つの値にまとめます。リンクの走査で複数のオブジェクトに到達する可能性がある場合は、必ず集計が必要です。オントロジー定義の派生プロパティと実行時定義の派生プロパティは、どちらも集計をサポートします。
リンクを介した選択と集計には、別の派生プロパティ定義を埋め込めませんが、それらのプロパティセレクターは、すでにスコープ内にあるプロパティを参照できます。式では、以下で説明するように、ネイティブプロパティ、またはリンクを介した選択と集計の結果を使用できます。
次のテーブルは、各集計について、Ontology Manager での名前、オントロジー SDK でのメソッド名、入力として受け付けるプロパティタイプ、および生成する値のプロパティタイプを示しています。
| Ontology Manager での名前 | オントロジー SDK でのメソッド名 | ソースのプロパティタイプ | 結果のプロパティタイプ |
|---|---|---|---|
| 件数 | $count | 該当なし | Long |
| 平均 | avg | 数値 | Double |
| 合計 | sum | 数値 | 数値、拡張あり(以下を参照) |
| 最小値 | min | 数値、文字列、ブール値、日付、タイムスタンプ | ソースと同じ |
| 最大値 | max | 数値、文字列、ブール値、日付、タイムスタンプ | ソースと同じ |
| 近似カーディナリティ | approximateDistinct | 数値、文字列、ブール値、日付、タイムスタンプ | Long |
| 完全一致カーディナリティ | exactDistinct | 数値、文字列、ブール値、日付、タイムスタンプ | Long |
| リストを収集 | collectList | vector 以外のすべて | ソースのデータ型の配列 |
| セットを収集 | collectSet | vector 以外のすべて | ソースのデータ型の配列 |
| 利用不可 | approximatePercentile | 数値 | ソースと同じ |
このテーブルでは、数値には byte、short、integer、long、float、double、decimal が含まれます。
有効なソースのプロパティタイプはそれぞれ、スカラーまたはそのデータ型の配列にできます。集計では、結果を計算する前に配列の入力をフラット化します。たとえば、array<integer> プロパティのパーセンタイルは integer を返します。
合計集計は、オーバーフローを避けるために結果の数値データ型を拡張します。
| ソースのデータ型 | 結果のデータ型 |
|---|---|
short, integer | long |
long | long |
float | double |
double | double |
decimal | decimal、精度を増やし、必要に応じてスケールを減らします |
リストを収集集計とセットを収集集計には、次の共通の動作があります。
10 です。最大 100 まで増やせます。プロパティリデューサーは、表示とインターフェースの実装のために、収集された配列から代表値を1つ選択できます。リデューサーは、クエリで使用される配列全体を変更しません。
ベクトルプロパティは、派生プロパティによる集計や選択の対象にできません。派生プロパティはベクトル値を生成できません。
式は、値を算術的に組み合わせたり、日付の一部を抽出したりします。実行時定義の派生プロパティでのみ利用可能です。
現在、式では固定リテラルはサポートされていません。式ベースの派生プロパティは、宣言順序で先に定義された派生プロパティのみを参照できます。具体的には、内側のオブジェクトセット式で定義された派生プロパティです。たとえば、複数の withProperties 操作を連結する場合、派生プロパティは後続の式ベースの操作で参照できますが、同じ操作内や、宣言順序でそれより前の操作では参照できません。リンクされたプロパティベースおよび集計ベースの派生プロパティは、ほかの派生プロパティを一切参照できません。
| オントロジー SDK | 説明 |
|---|---|
add | 2つの値を加算します。 |
subtract | 1つ目の値から2つ目の値を減算します。 |
multiply | 2つの値を乗算します。 |
divide | 1つ目の値を2つ目の値で除算します。 |
max | 2つの値のうち大きい方を返します。 |
min | 2つの値のうち小さい方を返します。 |
abs | 絶対値を返します。 |
negate | 値の符号を反転します。 |
| オントロジー SDK | 説明 |
|---|---|
min | 2つの値のうち早い方を返します。 |
max | 2つの値のうち遅い方を返します。 |
extractPart | 日付の構成要素を抽出します。DAYS、MONTHS、QUARTERS、YEARS を受け付けます。 |
式には、@osdk/client パッケージのバージョン 2.4.0 以降が必要です。
プロパティを直接選択できるかどうかは、各リンクの走査で到達できるオブジェクトの数によって決まります。複数のオブジェクトに到達できる場合は、集計が必要です。
| リンクチェーン | 利用可能な操作 |
|---|---|
| すべての走査で到達するオブジェクトが最大1個 | プロパティを直接選択、または集計 |
| いずれかの走査で複数のオブジェクトに到達できる | 集計が必要 |
| チェーンに多対多リンクが含まれる | 集計が必要。選択は一切許可されない |
| 外部キーが配列である一対多リンク | 集計が必要。どちらの方向でも多数のオブジェクトに到達する可能性があるものとして扱われる |
定義された派生プロパティは、同じリクエスト内ではネイティブプロパティとほぼ同様に動作しますが、いくつかの違いがあります。
| 操作 | サポートの有無 | 注記 |
|---|---|---|
| 結果に含めて返す | はい | 派生プロパティは、プロパティタイプにかかわらず明示的に選択する必要があります。 |
| 絞り込む | はい | 完全一致、範囲、接頭辞、フレーズ、全文、地理、相対日付のフィルターが含まれます。 |
| 並べ替え | はい | Workshop では、派生プロパティを使用するオブジェクトセットを並べ替えると、セットが200行に制限されます。 |
| 集計 | はい | |
| グループ化 | はい | |
| 別の派生プロパティから参照する | 制限あり | リンクされたプロパティベースおよび集計ベースの派生プロパティは、ほかの派生プロパティを参照できません。式ベースでのサポートは、上記のとおり宣言順序によって異なります。 |
| アクションまたは関数で編集する | いいえ | 派生プロパティは読み取り専用です。 |
| 主キーとして使用する | いいえ | |
| リンクタイプの外部キーとして使用する | いいえ |
派生プロパティの値はクエリ時に評価され、インデックス化されません。パフォーマンスは主にデータの規模、つまり評価されるオブジェクト数と、それぞれから到達するリンクされたオブジェクトの数に依存します。相対的なコストは、リクエストの遅延とコンピューティング使用量を反映します。
| 集計 | 読み込みコスト | 検索コスト | 注記 |
|---|---|---|---|
| 件数 | 低 | 高 | |
| 合計、平均、最小値、最大値 | 低 | 高 | |
| 近似カーディナリティ | 低 | 高 | 正確な件数が必要でない限り、正確なカーディナリティよりもこちらを推奨します。 |
| 正確なカーディナリティ | 中 | 高 | |
| 近似パーセンタイル | 低 | 高 | 実行時に定義されるもののみです。 |
| リストを収集、セットを収集 | 低 | 低 | コストは表示上限ではなく、リンクされたオブジェクトの数に応じて増加します。 |
追加のガイダンス:
プラットフォーム全体の実行しきい値とフォールバック動作については、オントロジークエリの制限を確認してください。コンピューティングコストについては、クエリのコンピューティング使用量を確認してください。