フィルター式とは?(DynamoDB)

DynamoDBのフィルター式は、ScanおよびQuery操作の結果として返されるアイテムをさらにフィルタリングするための条件式です。フィルター式を使用すると、DynamoDBから返されるアイテムのサブセットを制御することができます。ただし、フィルター式が実行されるのは、アイテムがスキャンまたはクエリされてからであり、フィルタリングはサービス側で行われるため、読み取り容量単位のコストには影響しません。

フィルター式の具体例:

import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('YourTableName')

response = table.query(
KeyConditionExpression=Key('YourPrimaryKey').eq('PrimaryKeyValue'),
FilterExpression=Attr('YourAttributeName').lt(10)
)

この例では、プライマリキーに対するクエリ操作を行った後、属性YourAttributeNameの値が10より小さいアイテムだけをフィルタリングしています。

フィルター式を使用する際の注意点:

  1. フィルター式はアイテムがDynamoDBから読み取られた後に適用されるため、読み取り容量単位のコストには影響しません。すなわち、大量のデータをスキャンまたはクエリした後で少量のデータだけをフィルタリングする場合、その読み取り操作のコストは高くなります。
  2. フィルター式では、非キー属性のみを参照できます。キー属性に対する条件はKeyConditionExpressionで指定する必要があります。
  3. フィルター式で使用するすべての属性名や値は、エクスプレッション属性名やエクスプレッション属性値として明示的に定義する必要がある場合があります。

フィルター式は、クエリやスキャンの結果にさらなる条件を追加する際に便利ですが、効率的な読み取りを行うためには、主要な条件はKeyConditionExpressionやセカンダリインデックスを使用して指定することが推奨されます。

記事タイトル検索