Sim*_*Rex 3 sql amazon-dynamodb partiql
我尝试将 PartiQL 与 DynamoDB 结合使用来执行 SQL 查询,以检查设备是否处于非活动状态并包含错误。这是我正在使用的查询:
SELECT *
FROM "table"
WHERE "device"."active" = 0 AND "device"."error" IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
但是我注意到,即使设备没有错误项,查询仍然返回一行。如何查询仅包含错误项的设备?
有错误项目
{
"id": "value",
"name": "value,
"device": {
"active": 0,
"error": {
"reason": "value"
}
}
}
Run Code Online (Sandbox Code Playgroud)
无错误项目
{
"id": "value",
"name": "value,
"device": {
"active": 0
}
}
Run Code Online (Sandbox Code Playgroud)
您正在寻找IS NOT MISSING:) 这是过滤表达式运算符函数的partiql 版本attribute_exists。
给定一个带有主键 PK、排序键 SK 和以下数据的表:
| PK | SK | 我的地图 |
|---|---|---|
| 富 | 1 | {} |
| 富 | 2 | {“测试”: {}} |
-- Returns both foo 1 and foo 2
SELECT *
FROM "my-table"
WHERE "PK" = 'foo' AND "myMap"."test" IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
-- Returns just foo 2
SELECT *
FROM "my-table"
WHERE "PK" = 'foo' AND "myMap"."test" IS NOT MISSING
Run Code Online (Sandbox Code Playgroud)
还要确保在 WHERE 子句中指定 PK - 否则,您的查询将是完整扫描。不过,也许这就是你想要的。只是需要注意一些事情。
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |