我在DynamoDB中有下表。
ID Author storyName
1 AuthorOne Story 1
2 AuthorOne Story 2
3 AuthorTwo Story 1
4 AuthorTwo Story 2
我是DynamoDB的新手,我需要一个可以检索所有作者姓名的查询。如果是常规数据库(RDBMS),我会使用下面的查询。
select DISTINCT Author from tableName;
如何在DynamoDB中执行此操作?
答案 0 :(得分:1)
您可以扫描表格,仅投影ID和作者属性,然后从项目属性和.map(item -> item.getS("Author")
投射.collect(Collectors.toSet())
。如果您不想在每次需要查找作者列表时扫描表,则需要将表的更新流式传输到AWS ElasticSearch或其他支持计数的平台。
答案 1 :(得分:0)
DynamoDB没有像SQL这样的内置功能来获取属性的不同值。
但是,您可以使用与DynamoDB集成的 AWS EMR服务来运行类似Distinct
查询的SQL。
Hive查询: -
所有要素类型(feature_class)按字母顺序排列:
SELECT DISTINCT feature_class
FROM ddb_features
ORDER BY feature_class;
Refer the data in DynamoDB table with Apache Hive on Amazon EMR
答案 2 :(得分:-2)
不幸的是,DynamoDB不支持SQL查询或任何其他实现此目的的方法。 DynamoDB的查询能力非常有限。您可以为表指定分区键和排序键,以过滤行,仅此而已。
名为Rockset的服务可以拖尾DynamoDB表并在它们上提供功能齐全的SQL。
此博客讨论如何使用Rockset通过SQL查询DynamoDB表中的数据:https://rockset.com/blog/running-fast-sql-on-dynamodb-tables/
全面披露:我在Rockset的工程团队工作。