すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Collapse (distinct)

最終更新日:Apr 30, 2026

collapse (distinct) 機能は、指定された列に基づいて検索結果を重複排除し、一意の値ごとに 1 件の結果を返すことで、返される結果の多様性を高めます。

前提条件

注意事項

  • collapse 機能は、Offset+Limit 方式によるページングのみをサポートします。トークン方式はサポートされていません。

  • 集約と collapse 機能を結果セットに同時に適用する場合、集約は collapse 前の結果セットに対して実行されます。

  • collapse 機能を使用した場合、返されるグループの総数は Offset と Limit の合計値によって決定されます。返されるグループの最大数は 100,000 です。

  • 返される行の総数は、collapse 前の一致行数を示します。collapse 後のグループ総数を取得することはできません。

パラメーター

パラメーター

説明

TableName

データテーブルの名前。

IndexName

検索インデックスの名前。

Query

任意のクエリタイプを指定できます。

Collapse

collapse のパラメータ設定。FieldName を含みます。

FieldName:結果セットを折りたたむ対象となる列の名前。この機能は整数、浮動小数点数、キーワード型の列のみをサポートします。配列型の列はサポートされていません。

Offset

クエリの開始位置。

Limit

クエリで返されるアイテムの最大数。

データではなく行数のみが必要な場合は、Limit を 0 に設定してください。これにより、行は返されません。

使用例

次の例では、テーブル内のすべての行をクエリし、pk0 列に基づいて結果セットを collapse し、pk0 の一意の値ごとに 1 行のみを返します。

/// <summary>
/// pk0 列に基づいて結果セットを collapse します。
/// </summary>
/// <param name="otsClient"></param>
public static void UseCollapse(OTSClient otsClient)
{
    MatchAllQuery matchAllQuery = new MatchAllQuery();

    Collapse collapse = new Collapse();
    collapse.FieldName = "pk0";

    SearchQuery searchQuery = new SearchQuery();
    searchQuery.Query = matchAllQuery;
    searchQuery.Collapse = collapse;

    SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);

    SearchResponse searchResponse = otsClient.Search(searchRequest);

    foreach (Row row in searchResponse.Rows)
    {
        Console.WriteLine(JsonConvert.SerializeObject(row));
    }
}

よくある質問

参考資料

  • 多次元インデックスを使用してデータをクエリする際は、以下のクエリ方法を使用できます:完全一致検索複数値完全一致検索完全一致検索一致検索フレーズ一致検索プレフィックス検索範囲クエリワイルドカード検索ブール値クエリジオクエリネストされたクエリ、およびexists クエリ。ビジネス要件に応じて、さまざまなクエリ方法を組み合わせて多角的にデータをクエリできます。

    クエリ条件を満たす行に対して、ソートおよびページング機能を使用して並べ替えやページ分割を行うことができます。詳細については、「ソートとページング」をご参照ください。

    collapse (distinct) 機能を使用して、特定の列に基づいて結果セットを collapse できます。これにより、指定されたタイプのデータがクエリ結果に 1 回のみ表示されます。詳細については、「Collapse (distinct)」をご参照ください。

  • データテーブル内のデータを分析したい場合は、Search 操作の集約機能または SQL ステートメントを実行できます。たとえば、最小値、最大値、合計値、行数の合計などを取得できます。詳細については、「集約」および「SQL クエリ」をご参照ください。

  • 行をソートせずにクエリ条件を満たすすべての行を取得したい場合は、ParallelScan 操作および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、「並列スキャン」をご参照ください。