Tüm Ürünler
Search
Belge Merkezi

Tablestore:Aggregation

Son Güncelleme:Oct 02, 2026

Arama dizini sonuçları üzerinde ölçüm hesaplamak ve gruplama yapmak için Tablestore Python SDK'yı kullanın.

Ön Koşullar

Tablestore Python SDK yükleyin ve bir istemci başlatın.

Toplama özelliği SDK 5.2.1 veya sonraki sürümlerini gerektirir. En son SDK sürümünü kullanmanızı öneririz.

Açıklama

Toplama işlemi, arama dizini sorgu sonuçlarından ölçümler hesaplar veya gruplar oluşturur. Ölçüm toplama nesnelerini SearchQuery.aggs listesine, gruplama nesnelerini ise SearchQuery.group_bys listesine ekleyin. İstek içindeki her bir name değeri benzersiz olmalı ve karşılık gelen yanıt sonucunu tanımlamalıdır. Yalnızca toplama sonuçlarını almak için limit parametresini 0 olarak ayarlayın.


Özellik


Açıklama


Min, Max, Sum, Avg


Minimum, maksimum, toplam ve ortalama değerleri hesaplar.


Count, DistinctCount


Boş olmayan alan değerlerine sahip satırları ve farklı alan değerlerini sayar.


Percentiles


Bir veya daha fazla yüzdelik dilimi hesaplar.


TopRows


Her gruptaki en üst sıradaki satırları alt toplama olarak döndürür.


GroupByField, GroupByComposite


Tek bir alan değerine veya alan kombinasyonuna göre gruplandırır.


GroupByRange, GroupByGeoDistance, GroupByFilter


Sayısal aralığa, coğrafi mesafeye veya filtre koşullarına göre gruplandırır.


GroupByHistogram, GroupByDateHistogram, GroupByGeoGrid


Sayısal histogramlar, tarih histogramları veya GeoHash ızgara grupları oluşturur.

Önemli

Toplama için kullanılan arama dizini alanlarında sıralama ve toplama özelliklerinin etkinleştirilmiş olması gerekir. Desteklenen alan türleri toplama ve gruplama türüne göre değişir. Aynı düzeyde en fazla beş gruplama yapılandırabilirsiniz. Farklı değer sayımı, yüzdelik dilimler ve alana göre gruplama yaklaşık hesaplama kullanır. Çok sayıda toplama veya derin iç içe geçmiş toplamalar istek karmaşıklığını ve gecikme süresini artırır.

Aşağıdaki örnek, price alanının minimum, maksimum ve ortalama değerlerini hesaplar ve satırları category alanına göre gruplar.

search_query = SearchQuery(
    MatchAllQuery(),
    limit=0,
    aggs=[
        Min("price", name="min_price"),
        Max("price", name="max_price"),
        Avg("price", name="avg_price"),
    ],
    group_bys=[
        GroupByField("category", name="by_category"),
    ],
)
response = client.search(
    "example_table",
    "example_index",
    search_query,
)
for result in response.agg_results:
    print(result.name, result.value)
for result in response.group_by_results:
    print(result.name, result.items)

Parametreler

Arama isteği

search yöntemi aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


table_name (gerekli)


str


Veri tablosunun adı.


index_name (gerekli)


str


Arama dizininin adı.


search_query (gerekli)


SearchQuery


Sorgu koşulu ve genel sorgu yapılandırmaları.


columns_to_get (isteğe bağlı)


ColumnsToGet


Dönüş sütunu yapılandırması. Bu parametre belirtilmezse yalnızca birincil anahtar sütunları döndürülür.


routing_keys (isteğe bağlı)


list


Özel yönlendirme alanlarının birincil anahtar değerleri. Özel yönlendirme yapılandırılmadıysa bu parametre gerekli değildir.


timeout_s (isteğe bağlı)


int


Saniye cinsinden istek zaman aşımı. Bu parametre belirtilmezse istemci düzeyindeki zaman aşımı kullanılır.

Sorgu yapılandırması

search_query parametresi SearchQuery türündedir ve aşağıdaki toplama ile ilgili parametreleri içerir.


Ad


Tür


Açıklama


query (gerekli)


Query


Toplama kapsamını belirleyen sorgu koşulu. Tüm satırları toplamak için MatchAllQuery kullanın.


aggs (isteğe bağlı)


list[Agg]


Ölçüm toplama listesi. Farklı adlara sahip toplamaları birleştirebilirsiniz.


group_bys (isteğe bağlı)


list[BaseGroupBy]


Gruplama listesi. Farklı adlara sahip gruplamaları birleştirebilirsiniz.


limit (isteğe bağlı)


int


Döndürülecek sorgu satırı sayısı. Yalnızca toplama sonuçlarını almak için bu parametreyi 0 olarak ayarlayın.

Ölçüm toplamaları

Aşağıdaki nesneleri search_query.aggs listesine ekleyin. field toplama alanıdır, name sonucu tanımlar ve missing_value alan eksik olduğunda kullanılır. missing_value belirtilmezse alanı eksik olan satırlar yoksayılır.

Min, Max ve Avg


Ad


Tür


Açıklama


field (gerekli)


str


Toplama alanı. Desteklenen türler: Long, Double ve Date.


missing_value (isteğe bağlı)


str / int / float


Alan eksik olduğunda kullanılacak değer.


name (isteğe bağlı)


str


Toplama adı. Varsayılan değerler: sırasıyla min, max ve avg.

Sum


Ad


Tür


Açıklama


field (gerekli)


str


Toplama alanı. Desteklenen türler: Long ve Double.


missing_value (isteğe bağlı)


int / float


Alan eksik olduğunda toplamda kullanılacak değer.


name (isteğe bağlı)


str


Toplama adı. Varsayılan değer: sum.

Count


Ad


Tür


Açıklama


field (gerekli)


str


Boş olmayan satırları sayılacak alan. Desteklenen türler: Long, Double, Boolean, Keyword, Date ve GeoPoint.


name (isteğe bağlı)


str


Toplama adı. Varsayılan değer: count.

DistinctCount


Ad


Tür


Açıklama


field (gerekli)


str


Farklı değerleri sayılacak alan. Desteklenen türler: Long, Double, Boolean, Keyword, Date ve GeoPoint.


missing_value (isteğe bağlı)


str / int / float / bool


Alan eksik olduğunda farklı değer sayımına dahil edilecek değer.


name (isteğe bağlı)


str


Toplama adı. Varsayılan değer: distinct_count.

Percentiles


Ad


Tür


Açıklama


field (gerekli)


str


Toplama alanı. Desteklenen türler: Long, Double ve Date.


percentiles_list (gerekli)


list[float]


Hesaplanacak yüzdelik dilimler, örneğin [50, 90, 99].


missing_value (isteğe bağlı)


str / int / float


Alan eksik olduğunda kullanılacak değer.


name (isteğe bağlı)


str


Toplama adı. Varsayılan değer: percentiles.

TopRows


Ad


Tür


Açıklama


limit (gerekli)


int


Her gruptan döndürülecek maksimum satır sayısı.


sort (gerekli)


Sort


Her gruptaki satırların sıralama düzeni.


name (isteğe bağlı)


str


Toplama adı. Varsayılan değer: top_rows.

Not

DistinctCount yaklaşık bir değerdir. 10.000'den az farklı değer için sonuçlar kesin değere yakındır ve 100 milyon değer için hata oranı yaklaşık %2'dir. Percentiles da yaklaşık bir değerdir ve uç yüzdelik dilimler genellikle ortalamadan daha doğrudur. TopRows öğesini yalnızca bir gruplamanın alt toplamasi olarak kullanın.

Gruplama

Aşağıdaki nesneleri search_query.group_bys listesine ekleyin. Her grupta ölçüm alt toplamaları ve alt gruplama yapmak için sub_aggs ve sub_group_bys parametrelerini kullanın.

GroupByField


Ad


Tür


Açıklama


field_name (gerekli)


str


Gruplama alanı. Desteklenen türler: Long, Double, Boolean, Keyword ve Date.


size (isteğe bağlı)


int


Döndürülecek grup sayısı. Varsayılan değer: 10. Maksimum değer: 2000.


group_by_sort (isteğe bağlı)


list


Grup sıralama kuralları. Varsayılan olarak gruplar satır sayısına göre azalan düzende sıralanır. GroupKeySort, RowCountSort ve SubAggSort desteklenir.


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_field.

GroupByComposite


Ad


Tür


Açıklama


sources (gerekli)


list[BaseGroupBy]


Çok alanlı gruplama kaynakları. GroupByField, GroupByHistogram veya GroupByDateHistogram türünde en fazla 32 kaynak belirtebilirsiniz.


size (isteğe bağlı)


int


Döndürülecek grup sayısı. Varsayılan değer: 10. Maksimum değer: 2000.


next_token (isteğe bağlı)


bytes


Sonraki grup sayfası için belirteç. İlk istekte bunu belirtmeyin.


suggested_size (isteğe bağlı)


int


Yüksek verimlilik gerektiren hesaplama senaryoları için yumuşak sınır. size ile birlikte belirtmeyin.


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar. GroupByComposite başka bir gruplamanın alt grubu olamaz.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_composite.

GroupByRange


Ad


Tür


Açıklama


field_name (gerekli)


str


Gruplama alanı. Desteklenen türler: Long ve Double.


ranges (gerekli)


list[tuple]


Sol kapalı, sağ açık aralıklar, örneğin [(0, 100), (100, 200)].


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_range.

GroupByGeoDistance


Ad


Tür


Açıklama


field_name (gerekli)


str


GeoPoint gruplama alanı.


origin (gerekli)


GeoPoint


Merkez noktası. Oluşturucu parametreleri enlem ve ardından boylamdır.


ranges (gerekli)


list[tuple]


Metre cinsinden mesafe aralıkları. Her aralık sol kapalı ve sağ açıktır.


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_geo_distance.

GroupByFilter


Ad


Tür


Açıklama


filters (gerekli)


list[Query]


Filtre koşulları. Sonuç sırası koşul sırasıyla eşleşir.


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_filter.

GroupByHistogram


Ad


Tür


Açıklama


field_name (gerekli)


str


Gruplama alanı. Desteklenen türler: Long ve Double.


interval (gerekli)


int / float


Sayısal histogram aralığı.


field_range (gerekli)


FieldRange


Toplama aralığı. (max-min)/interval değeri 2000 değerini aşamaz.


missing_value (isteğe bağlı)


int / float


Alan eksik olduğunda histogramda kullanılacak değer.


min_doc_count (isteğe bağlı)


int


Bir paket için minimum satır sayısı. Daha az satıra sahip paketler döndürülmez.


group_by_sort (isteğe bağlı)


list


Grup sıralama kuralları.


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_histogram.

GroupByDateHistogram


Ad


Tür


Açıklama


field_name (gerekli)


str


Date gruplama alanı.


interval (gerekli)


DateTimeValue


Tarih veya saat aralığı; bir değer ve DateTimeUnit bileşenlerinden oluşur.


field_range (gerekli)


FieldRange


Toplama aralığı. Python oluşturucusu bu parametrenin atlanmasına izin verse de sunucu bunu gerektirir.


missing (isteğe bağlı)


str


Alan eksik olduğunda histogramda kullanılacak tarih değeri.


min_doc_count (isteğe bağlı)


int


Bir paket için minimum satır sayısı. Daha az satıra sahip paketler döndürülmez.


time_zone (isteğe bağlı)


str


+hh:mm veya -hh:mm biçimindeki saat dilimi, örneğin +08:00.


group_by_sort (isteğe bağlı)


list


Grup sıralama kuralları.


offset (isteğe bağlı)


DateTimeValue


Varsayılan başlangıç noktasından paket sınırı kaydırması.


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_date_histogram.

GroupByGeoGrid


Ad


Tür


Açıklama


field_name (gerekli)


str


GeoPoint gruplama alanı.


precision (gerekli)


GeoHashPrecision


GeoHash ızgara hassasiyeti. Daha yüksek bir enum numarası daha küçük bir ızgarayı temsil eder.


size (isteğe bağlı)


int


Döndürülecek ızgara grubu sayısı.


sub_aggs (isteğe bağlı)


list[Agg]


Ölçüm alt toplamaları.


sub_group_bys (isteğe bağlı)


list[BaseGroupBy]


Alt gruplamalar.


name (isteğe bağlı)


str


Gruplama adı. Varsayılan değer: group_by_geo_grid.

Not

GroupByComposite Tablestore Python SDK 6.4.4 veya sonraki bir sürümü gerektirir. Çok sayıda grup varsa size parametresini belirtin ve her sonuçtan alınan next_token değerini kullanarak belirteç boş kalana kadar sayfalandırma yapın.

Dönüş sütunları

columns_to_get parametresi ColumnsToGet türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


column_names (isteğe bağlı)


list[str]


Döndürülecek nitelik sütunlarının adları. Bu parametreyi yalnızca return_type değeri SPECIFIED olduğunda belirtin.


return_type (isteğe bağlı)


ColumnReturnType


Dönüş sütunu modu. NONE (varsayılan) yalnızca birincil anahtar sütunlarını döndürür; SPECIFIED belirtilen nitelik sütunlarını döndürür; ALL tablodaki tüm nitelik sütunlarını döndürür ve ALL_FROM_INDEX dizindeki tüm depolanan alanları döndürür.

Yanıt

search yöntemi SearchResponse döndürür. Aşağıdaki tabloda temel alanlar açıklanmaktadır.


Alan


Tür


Açıklama


rows


list[Row]


Sorgu tarafından döndürülen satırlar. Sayı limit değerini aşmaz.


next_token


bytes


Sonraki sayfa için belirteç. Boş bir değer, başka veri olmadığını gösterir.


total_count


int


Eşleşen satır sayısı. Değer get_total_count ayarına bağlıdır.


is_all_succeed


bool


Tüm dizin bölümlerinin sorgulanıp sorgulanmadığını gösterir. Değer False ise kısmi sonuçlar döndürülür.


agg_results


list[AggResult]


Ölçüm toplama sonuçları. aggs yapılandırılmamışsa bu alan boştur.


group_by_results


list[GroupByResult]


Gruplama sonuçları. group_bys yapılandırılmamışsa bu alan boştur.


search_hits


list[SearchHit]


Satırlar, alakalılık puanları ve vurgulamalar gibi genişletilmiş bilgileri içeren arama eşleşmeleri.

agg_results listesindeki her öğe, bir toplamayı ve değerini tanımlamak için name ve value kullanır. group_by_results listesindeki her öğe, grup anahtarlarını, satır sayılarını, alt toplamaları ve alt gruplamaları döndürmek için name ve items kullanır. Bir GroupByComposite sonucu ayrıca devam eden okumalar için source_group_by_names ve next_token içerir. Her grubun keys değeri, sources ile hizalanmış bir dize listesidir; eksik bir alan değeri None ile temsil edilir.

Tuple uyumlu yanıt

Tablestore Python SDK 5.2.0 sürümünden itibaren arama API'leri tuple yerine yanıt nesneleri döndürür. 5.1.0 ve önceki sürümler doğrudan tuple döndürür. 5.2.1 ve sonraki sürümlerde, önceki sürümlerle uyumlu bir tuple elde etmek için SearchResponse.v1_response() yöntemini çağırabilirsiniz. Yeni kodlarda, yanıt alanları genişletildiğinde paketleme hatalarını önlemek için SearchResponse özniteliklerine doğrudan erişin.

(
    rows,
    next_token,
    total_count,
    is_all_succeed,
    agg_results,
    group_by_results,
    search_hits,
) = response.v1_response()

Örnekler

Çok alanlı gruplamada sayfalandırma

Aşağıdaki örnek, category ve price alanlarına göre gruplandırma yapar ve sayfa başına iki grup döndürür.

sources = [
    GroupByField("category", name="category_source"),
    GroupByField("price", name="price_source"),
]
next_token = None
all_items = []

while True:
    group_by = GroupByComposite(
        sources,
        size=2,
        next_token=next_token,
        name="by_category_and_price",
    )
    response = client.search(
        "example_table",
        "example_index",
        SearchQuery(MatchAllQuery(), limit=0, group_bys=[group_by]),
    )
    result = response.group_by_results[0]
    all_items.extend(result.items)
    next_token = result.next_token
    if not next_token:
        break

for item in all_items:
    print(item.keys, item.row_count)

Tarih histogramı ve coğrafi ızgara oluşturma

Aşağıdaki örnek günlük bir tarih histogramı oluşturur ve konumları yaklaşık 39 km x 19 km boyutlarında GeoHash ızgaralarına göre gruplandırır.

group_bys = [
    GroupByDateHistogram(
        "event_date",
        DateTimeValue(1, DateTimeUnit.DAY),
        field_range=FieldRange("2026-08-01", "2026-08-04"),
        name="by_day",
    ),
    GroupByGeoGrid(
        "location",
        GeoHashPrecision.GHP_39KM_19KM_4,
        name="by_geo_grid",
    ),
]
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(MatchAllQuery(), limit=0, group_bys=group_bys),
)
for result in response.group_by_results:
    print(result.name, result.items)