Ten artykuł koncentruje się na wyrażeniach filtrów. Dlatego zdefiniujemy wyrażenia filtra, wyjaśnimy, dlaczego i kiedy mają one zastosowanie, i zapewnimy przewodnik krok po kroku, jak je używać za pomocą odpowiednich przykładów.
Jakie są wyrażenia filtra?
Wyrażenia filtra są popularną techniką filtrowania danych w DynamoDB podczas operacji zapytania i skanowania. W DynamoDB prawidłowe modelowanie danych i organizacja polegają na filtrowaniu. Chociaż większość aplikacji zawsze ma mnóstwo zapisanych danych, możesz pilnie potrzebować elementu z rozległego bałaganu.
Twoja zdolność do pobierania prawidłowych danych, gdy tylko potrzebujesz, zależy od możliwości filtrowania bazy danych, i tutaj pomagają wyrażenia filtra. Określają wyniki w elemencie zapytania, które chcesz zwrócić, ponieważ odrzucają resztę elementów.
Możesz zastosować wyrażenia filtra na filtrach po stronie serwera na atrybutach elementów po zakończeniu operacji zapytania, ale zanim serwer przywróci wyniki wywołania zapytania. Oznacza to, że zapytanie nadal zużywa taką samą pojemność odczytu, niezależnie od tego, czy używasz wyrażenia filtra.
Poza tym, podobnie jak zwykłe operacje zapytań, limit danych 1 MB dla operacji zapytań następuje przed oceną działania ekspresji filtra. Możesz użyć tej operacji, aby zmniejszyć ładunek, wyszukać określone elementy oraz poprawić prostotę i czytelność podczas tworzenia aplikacji.
Filtr Składnia wyrażenia i przykłady
W szczególności zarówno wyrażenia filtra, jak i wyrażenia kluczowe używają tej samej składni. Poza tym wyrażenia filtra i wyrażenia warunków mogą również wykorzystywać te same funkcje, komparatory i operatory logiczne.
Pozostali operatorzy, którzy filtrują wyrażenia, które mogą użyć, obejmują również operator zawierający, operator OR, operator not-Equals (), operator in, między operatorem, operator początkowy, operator rozmiaru i operator ESTIST.
Przykład 1: Zapytanie za pomocą klawiszy podstawowych AWS i DynamoDB
Ten przykład pyta tabela muzyki dla konkretnego gatunku (klucz partycji) i konkretny artysta (klucz sort). Narzędzie przywołuje tylko wynik dla elementów pasujących do konkretnego klucza partycji i klucza sortowania piosenek z najwięcej widoków.
Możesz określić liczbę widoków (#V) w poleceniu. Na przykład oznaczamy nasz minimalny limit do 1000 wyświetleń, aby sugerować, że tylko wyniki dla utworów z ponad 1000 wyświetleń powrócą.
$ AWS Dynamodb Query \
--Muzyka nazwa tabeli \
--wyrażanie kwalifikacji kluczy ”gatunek =: fn i artysta =: sub" \
--Ekspresja filtra "#v> =: num (1000)" \
--Expression-attribute-nazwa '"#v": "widoki"' \
--Expression-attribute-wartości plik: // wartości.JSON
Przykład 2: Korzystanie z AWS CLI z wyrażeniem warunków
Możemy zrestrukturyzować to samo zapytanie, co w poprzednim przykładzie, ale teraz z klawiszami warunku obok naszych filtrów. Nie zawiera klucza sortowania. Zamiast tego pobiera wszystkie rekordy dla określonego artysty z ponad 1000 wyświetleń. Można go również zrekonstruować, aby dostarczyć zamówienia powyżej danego numeru dla konkretnej nazwy użytkownika (Customer_ID).
$ AWS Dynamodb Query \
--Muzyka nazwa tabeli \
--Kluczowa ekspresja „nazwa użytkownika =: nazwa użytkownika” \
--Wyrażanie filtra „kwota>: kwota” \
--wyraża-atrybute-wartości
„: nazwa użytkownika”: „s”: „artysta”,
„: kwota”: „n”: „1000”
'\
$ Lokalne
Przykład wyniku wygląda tak:
Dana ilustracja pokazuje, że spośród 56 tytułów piosenek dla tego samego artysty tylko siedem piosenek ma ponad 1000 wyświetleń. Jednak obcięliśmy liczbę do celów zwięzłości i zawarliśmy tylko pierwsze i ostatnie wyniki na liście.
Przykład 3: Za pomocą wyrażeń filtra z operatorem NO-Equal ()
W poniższym narzędziu Java chcemy zapytać nasz stół (kolekcja filmów) dla wszystkich filmów, które nie są równe „Movie X”. Upewnij się, że używasz wyrażenia filtra z atrybutem (#name) wraz z wartością atrybutu wyrażenia (: nazwa), jak pokazano w następujący sposób:
const aws = wymaga („AWS-SDK”);
AWS.konfigurator.aktualizacja (region: „eu-West-1”);
const Dynamodb = nowy AWS.Dynamodb.DocumentClient ();
var params =
TableName: „Kolekcja filmów”,
KeyConditionExpression: '#pk =: pk',
FiltrExpression: „#Name: Nazwa”, (wyrażenie filtra)
ExpressionAttributenames: „#pk”: „PK”, „#name”: „Nazwa”, (wyrażenie warunku)
ExpressionAttributeValues:
„: PK”: „OGejhrdrs453hgd4ht44”,
„: Nazwa”: „Movie x”
;
Dynamodb.zapytanie (parametry, funkcja (err, data)
if (er) konsola.log (err);
inaczej konsola.log (dane);
);
Przykład 4: Za pomocą wyrażeń filtru z operatorem skanowania
Podczas gdy poprzednie polecenie używa tylko tych elementów, które nie są równe nazwie filmu o nazwie Movie X, upewnij się, że używasz tutaj wyrażeń warunków kluczowych wraz z wyrażeniem filtra. Wynika to z faktu, że nie można odfiltrować danych w operatorze zapytania bez użycia wyrażenia stanu kluczowego.
var params =
TableName: „Kolekcja filmów”,
FiltrExpression: "pk =: pk i #Name: Nazwa",
ExpressionAttributenames: „#Name”: „Nazwa”,
ExpressionAttributeValues:
„: PK”: „OGejhrdrs453hgd4ht44”,
„: Nazwa”: „Movie x”
;
Dynamodb.skanowanie (parametry, funkcja (err, data)
if (er) konsola.log (err);
inaczej konsola.log (dane);
);
Wniosek
To jest koniec naszego samouczka DynamoDB na temat wyrażeń filtra. Możesz użyć wyrażeń filtru do pobrania zestawu preferowanych danych, filtrowania pobranych danych po skanowaniu lub zapytaniu lub zwrócić zestaw danych do klienta. Chociaż ma to zastosowanie do szeregu narzędzi, występują instancje podczas korzystania z wyrażeń filtra. Na przykład możesz ich użyć tylko wtedy, gdy masz odpowiedni model danych, przy użyciu klucza podstawowego i podczas wyodrębnienia dużych części danych.