注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

プロパティのタイプによって、バケット化する方法について追加情報を提供する必要があります。

  • booleanプロパティの場合、唯一のオプションは.topValues()です。これは、true用のバケットとfalse用のバケットの2つを返します。
  • 文字列プロパティの場合、2つのオプションがあります。
    • .topValues(): 迅速な応答時間とカーディナリティの小さいプロパティ用。文字列プロパティのトップ1,000の値でバケット化されます。この制限は、返される集計が過度に大きくならないようにするためです。
    • .exactValues(): より正確な集計と、高カーディナリティプロパティの最大10,000のバケットを考慮する可能性。考慮されるバケットの量は、.exactValues({"maxBuckets": numBuckets})で指定できます。ここでnumBucketsは0から10,000の間の整数値でなければなりません。この方法の応答時間は、考慮する結果が多くなるため、長くかかることがあります。
  • 数値プロパティ(例:IntegerLongFloatDouble)の場合、2つのバケット化オプションがあります。
    • .byRanges()では、使用するべき正確な範囲を指定できます。たとえば、.byRanges({ min: 0, max: 50 }, { min: 50, max: 100 })を使用して、ここで指定した[0, 50]および[50, 100]の2つの範囲にオブジェクトをバケット化できます。範囲のminは包括的であり、maxは排他的です。minまたはmaxのいずれかを省略すると、それぞれ-∞からmaxまで、またはminから∞までの値を含むバケットが表示されます。
    • .byFixedWidth()では、各バケットの幅を指定できます。たとえば、.byFixedWidth(50)を使用して、幅が50の範囲にオブジェクトをバケット化できます。
  • LocalDateプロパティの場合、簡単なバケット化のためにさまざまな便利なメソッドが提供されています。
    • .byYear()
    • .byQuarter()
    • .byMonth()
    • .byWeek()
    • .byDays() は、値を日単位でバケット化します。バケット幅に使用する日数を渡すことができます。
  • Timestampプロパティの場合、LocalDateと同じバケット化オプションが適用されますが、以下の追加オプションも適用されます。
    • .byHours() は、値を時間単位でバケット化します。バケット幅に使用する時間数を渡すことができます。
    • .byMinutes() は、値を分単位でバケット化します。バケット幅に使用する分数を渡すことができます。
    • .bySeconds() は、値を秒単位でバケット化します。バケット幅に使用する秒数を渡すことができます。
  • Arrayプロパティの場合、バケット化オプションは配列内の要素のタイプによって決まります。特に、Array<PropertyType>に対してPropertyTypeと同じバケット化メソッドが得られます(例:Array<boolean>booleanと同じバケット化メソッドが得られます)。
    • たとえば、AliceとBobからなるArray<string>であるemployeeSetがあり、それぞれ["US", "UK"]["US"]で働いたとします。その場合、employeeSet.groupBy(e => e.pastCountries.exactValue()).count(){ "US": 2, "UK": 1 }を返します。

1つのプロパティでグループ化した後、オプションで.segmentBy()メソッドを呼び出してさらにバケット化を行うことができます。これにより、2つの検索可能プロパティでバケット化された3次元の集計を計算できます。たとえば、次のようにして従業員を開始日と役割でグループ化できます:

集約メトリックの選択

オブジェクトセットをグルーピングした後、各バケットで集約メトリックを計算するためのさまざまな集約メソッドを呼び出すことができます。プロパティが必要なメソッドは、searchable とマークされたプロパティのみを受け入れます。可能な集約方法は次のとおりです:

  • .count() は各バケット内のオブジェクト数を単純に返します
  • .average() は指定された数値、タイムスタンプ、日付プロパティの平均数を返します
  • .max() は指定された数値、タイムスタンプ、日付プロパティの最大値を返します
  • .min() は指定された数値、タイムスタンプ、日付プロパティの最小値を返します
  • .sum() は指定された数値プロパティの値の合計を返します
  • .cardinality() は指定されたプロパティの異なる値の近似数を返します

これらのメソッドのいずれかを呼び出すと、TwoDimensionalAggregation または ThreeDimensionalAggregation のいずれかが返されます。最終的な集約メソッドのいずれかを呼び出す前に .segmentBy() を呼び出した場合、ThreeDimensionalAggregation が返されます。

これらの集約タイプの構造、有効なバケットタイプを含む、詳しくはこちらをご覧ください。

結果の集約は Promise でラップされていることに注意してください。集約を計算するためには、リモートサービスからデータをロードする必要があるためです。Promise の結果を展開するためには、async/await ↗ の構文を使用できます。

以下は、集約をロードして結果として返す完全な例です。