Tablestore SDK for Python kullanarak sunucu tarafında öznitelik sütunu değerlerine göre satırları filtreleyin ve istemciye döndürülen veri miktarını azaltın.
Önkoşullar
Tablestore SDK for Python yükleyin ve bir istemciyi başlatın.
İşlev açıklaması
Filtreler, sunucu verileri okuduktan sonra uygulanır. Yalnızca koşulları karşılayan satırlar istemciye döndürülür. Filtreleme, sunucunun okuduğu satır sayısını veya tüketilen okuma kapasite birimlerini (CU) azaltmaz. Filtreleri, birincil anahtar aralığını daralttıktan sonra kullanın.
Aşağıdaki filtre koşulları desteklenir:
SingleColumnConditiontek bir öznitelik sütununun değerini karşılaştırır.SingleColumnRegexConditionbir dize öznitelik sütunundan alt dize çıkarır ve çıkarılan değeri karşılaştırır.CompositeColumnConditionen fazla 32 koşuluAND,ORveyaNOTile birleştirir.
Aşağıdaki örnek, bir aralık okuması sırasında status öznitelik sütunundaki en son değeri online olan satırları döndürür.
column_filter = SingleColumnCondition(
"status",
"online",
ComparatorType.EQUAL,
pass_if_missing=False,
)
start_primary_key = [("partition", "device"), ("id", INF_MIN)]
end_primary_key = [("partition", "device"), ("id", INF_MAX)]
consumed, next_start_primary_key, rows, next_token = client.get_range(
"example_table",
Direction.FORWARD,
start_primary_key,
end_primary_key,
column_filter=column_filter,
)
Parametreler
Tek sütunlu değer koşulu
Tek sütunlu değer koşulu oluşturmak için SingleColumnCondition(column_name, column_value, comparator, pass_if_missing=True, latest_version_only=True) yöntemini çağırın.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Düzenli ifade koşulu
Düzenli ifade koşulu oluşturmak için SingleColumnRegexCondition(column_name, comparator, column_value=None, regex_rule=None, latest_version_only=True) yöntemini çağırın. Düzenli ifade filtrelemesi yalnızca dize öznitelik sütunlarını destekler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hedef öznitelik sütunu eksikse satır düzenli ifade filtresinden asla geçemez. Bu koşul için pass_if_missing ayrı olarak yapılandırılamaz.
Düzenli ifade kuralı
regex_rule parametresi RegexRule türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
Bileşik koşul
Bileşik koşul oluşturmak için CompositeColumnCondition(combinator) yöntemini çağırın, ardından koşulları eklemek için add_sub_condition yöntemini çağırın.
|
|
|
|
|
|
|
|
|
|
|
|
Örnekler
Düzenli ifade ile filtreleme
Aşağıdaki örnek, account öznitelik sütunundaki user_004 gibi değerlerden sayıyı çıkarır, sayıyı tamsayıya dönüştürür ve çıkarılan değeri 3 değerinden büyük olan satırları döndürür.
regex_rule = RegexRule(r"user_(\d+)", CastType.VT_INTEGER)
column_filter = SingleColumnRegexCondition(
"account",
ComparatorType.GREATER_THAN,
3,
regex_rule,
)
consumed, next_start_primary_key, rows, next_token = client.get_range(
"example_table",
Direction.FORWARD,
start_primary_key,
end_primary_key,
column_filter=column_filter,
)
Filtreleri birleştirme
Aşağıdaki örnek (category == "sensor" OR category == "gateway") AND score > 3 filtresini oluşturur.
category_filter = CompositeColumnCondition(LogicalOperator.OR)
category_filter.add_sub_condition(
SingleColumnCondition("category", "sensor", ComparatorType.EQUAL)
)
category_filter.add_sub_condition(
SingleColumnCondition("category", "gateway", ComparatorType.EQUAL)
)
column_filter = CompositeColumnCondition(LogicalOperator.AND)
column_filter.add_sub_condition(category_filter)
column_filter.add_sub_condition(
SingleColumnCondition("score", 3, ComparatorType.GREATER_THAN)
)
Geçmiş sürümleri değerlendirme
Aşağıdaki örnek latest_version_only parametresini False olarak ayarlar. status öznitelik sütununun herhangi bir sürümü online ise satır döndürülür. status sütununu içermeyen satırlar döndürülmez.
column_filter = SingleColumnCondition(
"status",
"online",
ComparatorType.EQUAL,
pass_if_missing=False,
latest_version_only=False,
)