2017-03-27 8 views
1

Ich versuche, ein Histogramm eines bestimmten Attributs in meinem dynamodb zu erstellen.
Ich dachte, der einfachste Weg, um mehr filter-expression
Dies ist meine Baseline-Abfrage mit einer einzigen filter-expression und es funktioniertMehrere FilterExpression in Dynamodb Scan

aws dynamodb scan --table-name test --select "COUNT" --filter-expression "contains(score, :s)" --expression-attribute-values '{ ":s": { "N": "1" } }' --limit 100 

Jetzt wäre die Verwendung, im an mehr filter expressions und im nicht sicher, wie zu erweitern versuchen.
Ich habe versucht:

aws dynamodb scan --table-name test --select "COUNT" --filter-expression "score = :s" --filter-expression "score = :s1" --expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' --limit 100 

und

aws dynamodb scan --table-name test --select "COUNT" --filter-expression "score = :s" | "score = :s1" --expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' --limit 100 

Antwort

2

Filterausdrücke sind eine Art von Bedingungsausdruck. Sie können combine filter expressions with boolean logic. In Ihrem Beispiel können Sie jedoch ohne Verwendung von AND/OR-Operatoren Ausdrücke kombinieren.

aws dynamodb scan --table-name test --select "COUNT" \ 
--filter-expression "score IN :s, :s1" \ 
--expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' \ 
--limit 100 
+1

Dies ist, was nach dem Ausführen der Abfrage wie dargestellt zurückgegeben wird: Ein Fehler ist aufgetreten (Validation), wenn der Scanvorgang Aufruf: Ungültige Filterexpression: Syntaxfehler; Token: ": s", in der Nähe von: "IN: s" –

2

Wahrscheinlich bin ich zu antworten spät. Aber, suchte nach einem ähnlichen Szenario und bekam nichts. Ich antworte immer noch, wenn jemand anders davon profitieren könnte.

aws dynamodb scan --table-name test --select "COUNT" \ 
--filter-expression "score = :s OR score = :s1" \ 
--expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' \ 
--limit 100 
Verwandte Themen