Scan
dynamodb_scan | R Documentation |
The Scan operation returns one or more items and item attributes by accessing every item in a table or a secondary index¶
Description¶
The scan
operation returns one or more items and item attributes by
accessing every item in a table or a secondary index. To have DynamoDB
return fewer items, you can provide a FilterExpression
operation.
If the total size of scanned items exceeds the maximum dataset size
limit of 1 MB, the scan completes and results are returned to the user.
The LastEvaluatedKey
value is also returned and the requestor can use
the LastEvaluatedKey
to continue the scan in a subsequent operation.
Each scan response also includes number of items that were scanned
(ScannedCount) as part of the request. If using a FilterExpression
, a
scan result can result in no items meeting the criteria and the Count
will result in zero. If you did not use a FilterExpression
in the scan
request, then Count
is the same as ScannedCount
.
Count
and ScannedCount
only return the count of items specific to a
single scan request and, unless the table is less than 1MB, do not
represent the total number of items in the table.
A single scan
operation first reads up to the maximum number of items
set (if using the Limit
parameter) or a maximum of 1 MB of data and
then applies any filtering to the results if a FilterExpression
is
provided. If LastEvaluatedKey
is present in the response, pagination
is required to complete the full table scan. For more information, see
Paginating the
Results
in the Amazon DynamoDB Developer Guide.
scan
operations proceed sequentially; however, for faster performance
on a large table or secondary index, applications can request a parallel
scan
operation by providing the Segment
and TotalSegments
parameters. For more information, see Parallel
Scan
in the Amazon DynamoDB Developer Guide.
By default, a scan
uses eventually consistent reads when accessing the
items in a table. Therefore, the results from an eventually consistent
scan
may not include the latest item changes at the time the scan
iterates through each item in the table. If you require a strongly
consistent read of each item as the scan iterates through the items in
the table, you can set the ConsistentRead
parameter to true. Strong
consistency only relates to the consistency of the read at the item
level.
DynamoDB does not provide snapshot isolation for a scan operation when
the ConsistentRead
parameter is set to true. Thus, a DynamoDB scan
operation does not guarantee that all reads in a scan see a consistent
snapshot of the table when the scan operation was requested.
Usage¶
dynamodb_scan(TableName, IndexName, AttributesToGet, Limit, Select,
ScanFilter, ConditionalOperator, ExclusiveStartKey,
ReturnConsumedCapacity, TotalSegments, Segment, ProjectionExpression,
FilterExpression, ExpressionAttributeNames, ExpressionAttributeValues,
ConsistentRead)
Arguments¶
TableName |
[required] The name of the table containing the requested items
or if you provide You can also provide the Amazon Resource Name (ARN) of the table in this parameter. |
IndexName |
The name of a secondary index to scan. This index can be any
local secondary index or global secondary index. Note that if you use
the |
AttributesToGet |
This is a legacy parameter. Use |
Limit |
The maximum number of items to evaluate (not necessarily the
number of matching items). If DynamoDB processes the number of items up
to the limit while processing the results, it stops the operation and
returns the matching values up to that point, and a key in
|
Select |
The attributes to be returned in the result. You can retrieve all item attributes, specific item attributes, the count of matching items, or in the case of an index, some or all of the attributes projected into the index.
If neither If you use the |
ScanFilter |
This is a legacy parameter. Use |
ConditionalOperator |
This is a legacy parameter. Use |
ExclusiveStartKey |
The primary key of the first item that this operation will
evaluate. Use the value that was returned for
The data type for In a parallel scan, a |
ReturnConsumedCapacity |
|
TotalSegments |
For a parallel The value for If you specify |
Segment |
For a parallel Segment IDs are zero-based, so the first segment is always 0. For
example, if you want to use four application threads to scan a table or
an index, then the first thread specifies a The value of The value for If you provide |
ProjectionExpression |
A string that identifies one or more attributes to retrieve from the specified table or index. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result. For more information, see Specifying Item Attributes in the Amazon DynamoDB Developer Guide. |
FilterExpression |
A string that contains conditions that DynamoDB applies after the
A For more information, see Filter Expressions in the Amazon DynamoDB Developer Guide. |
ExpressionAttributeNames |
One or more substitution tokens for attribute names in an
expression. The following are some use cases for using
Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:
The name of this attribute conflicts with a reserved word, so it
cannot be used directly in an expression. (For the complete list of
reserved words, see Reserved
Words in the Amazon DynamoDB Developer Guide). To work
around this, you could specify the following for
You could then use this substitution in an expression, as in this example:
Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime. For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer Guide. |
ExpressionAttributeValues |
One or more values that can be substituted in an expression. Use the : (colon) character in an expression to
dereference an attribute value. For example, suppose that you wanted to
check whether the value of the
You would first need to specify
You could then use these values in an expression, such as this:
For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer Guide. |
ConsistentRead |
A Boolean value that determines the read consistency model during the scan:
The default setting for The |
Value¶
A list with the following syntax:
list(
Items = list(
list(
list(
S = "string",
N = "string",
B = raw,
SS = list(
"string"
),
NS = list(
"string"
),
BS = list(
raw
),
M = list(
list()
),
L = list(
list()
),
NULL = TRUE|FALSE,
BOOL = TRUE|FALSE
)
)
),
Count = 123,
ScannedCount = 123,
LastEvaluatedKey = list(
list(
S = "string",
N = "string",
B = raw,
SS = list(
"string"
),
NS = list(
"string"
),
BS = list(
raw
),
M = list(
list()
),
L = list(
list()
),
NULL = TRUE|FALSE,
BOOL = TRUE|FALSE
)
),
ConsumedCapacity = list(
TableName = "string",
CapacityUnits = 123.0,
ReadCapacityUnits = 123.0,
WriteCapacityUnits = 123.0,
Table = list(
ReadCapacityUnits = 123.0,
WriteCapacityUnits = 123.0,
CapacityUnits = 123.0
),
LocalSecondaryIndexes = list(
list(
ReadCapacityUnits = 123.0,
WriteCapacityUnits = 123.0,
CapacityUnits = 123.0
)
),
GlobalSecondaryIndexes = list(
list(
ReadCapacityUnits = 123.0,
WriteCapacityUnits = 123.0,
CapacityUnits = 123.0
)
)
)
)
Request syntax¶
svc$scan(
TableName = "string",
IndexName = "string",
AttributesToGet = list(
"string"
),
Limit = 123,
Select = "ALL_ATTRIBUTES"|"ALL_PROJECTED_ATTRIBUTES"|"SPECIFIC_ATTRIBUTES"|"COUNT",
ScanFilter = list(
list(
AttributeValueList = list(
list(
S = "string",
N = "string",
B = raw,
SS = list(
"string"
),
NS = list(
"string"
),
BS = list(
raw
),
M = list(
list()
),
L = list(
list()
),
NULL = TRUE|FALSE,
BOOL = TRUE|FALSE
)
),
ComparisonOperator = "EQ"|"NE"|"IN"|"LE"|"LT"|"GE"|"GT"|"BETWEEN"|"NOT_NULL"|"NULL"|"CONTAINS"|"NOT_CONTAINS"|"BEGINS_WITH"
)
),
ConditionalOperator = "AND"|"OR",
ExclusiveStartKey = list(
list(
S = "string",
N = "string",
B = raw,
SS = list(
"string"
),
NS = list(
"string"
),
BS = list(
raw
),
M = list(
list()
),
L = list(
list()
),
NULL = TRUE|FALSE,
BOOL = TRUE|FALSE
)
),
ReturnConsumedCapacity = "INDEXES"|"TOTAL"|"NONE",
TotalSegments = 123,
Segment = 123,
ProjectionExpression = "string",
FilterExpression = "string",
ExpressionAttributeNames = list(
"string"
),
ExpressionAttributeValues = list(
list(
S = "string",
N = "string",
B = raw,
SS = list(
"string"
),
NS = list(
"string"
),
BS = list(
raw
),
M = list(
list()
),
L = list(
list()
),
NULL = TRUE|FALSE,
BOOL = TRUE|FALSE
)
),
ConsistentRead = TRUE|FALSE
)
Examples¶
## Not run:
# This example scans the entire Music table, and then narrows the results
# to songs by the artist "No One You Know". For each item, only the album
# title and song title are returned.
svc$scan(
ExpressionAttributeNames = list(
`#AT` = "AlbumTitle",
`#ST` = "SongTitle"
),
ExpressionAttributeValues = list(
`:a` = list(
S = "No One You Know"
)
),
FilterExpression = "Artist = :a",
ProjectionExpression = "#ST, #AT",
TableName = "Music"
)
## End(Not run)