问题标签 [partiql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 如何查询可用于存储为 SUPER 的列中的嵌套数据的键
我有一个 redshift 表,它有一列(SUPER 数据类型),其中包含嵌套的 json 数据,可以有 1..n 个嵌套,例如
该列有十亿多行,许多记录可能没有 3 或 4 级嵌套,具体取决于它是否在上游填充。
我想做一些与 postgres 上可用的 jsonb_object_keys(jsonb field) 等效的操作,以列出任何级别可用的键(不是值),因此在上面的块中它应该返回:
key1 key2 keyb k1a k2b
我在 partiql 中搜索了一个等效函数,但找不到。有人可以指出我正确的方向吗?
提前致谢
amazon-dynamodb - 如何从 DynamoDB 获取 PartiQL 中每个主分区键的最新数据
灵感来自如何从 DynamoDB 获取每个主分区键的最新数据?
我在 dynamodb 中有一张桌子。它存储帐户统计信息。帐户统计信息可能每天会更新数次。所以表记录可能如下所示:
+------------+--------------+--------+-------+
| account_id | 记录 ID | 意见 | 明星 |
+------------+--------------+--------+-------+
| 3 | 2019/03/16/1 | 29 | 3 |
+------------+--------------+--------+-------+
| 2 | 2019/03/16/2 | 130 | 21 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/3 | 12 | 2 |
+------------+--------------+--------+-------+
| 2 | 2019/03/16/1 | 57 | 12 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/2 | 8 | 2 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/1 | 3 | 0 |
+------------+--------------+--------+-------+
account_id是主分区钥匙。record_id 是主排序键
如何仅获取每个 account_ids 的最新记录?所以从上面的例子中我希望得到:
+------------+--------------+--------+-------+
| account_id | 记录 ID | 意见 | 明星 |
+------------+--------------+--------+-------+
| 3 | 2019/03/16/1 | 29 | 3 |
+------------+--------------+--------+-------+
| 2 | 2019/03/16/2 | 130 | 21 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/3 | 12 | 2 |
+------------+--------------+--------+-------+
这个数据方便用于报告目的。
amazon-web-services - 在 DynamoDB 中的整个表上运行 AWS 批处理执行语句
我在 DynamoDB 中有一个表,我需要更新其中的所有项目。每个项目都有一个键和多个带有布尔值的列。它看起来有点像这样:
钥匙 | 布尔值 | 布尔二 |
---|---|---|
关键一 | 真的 | 真的 |
关键二 | 真的 | 错误的 |
关键三 | 真的 | 错误的 |
我有很多这样的项目(太多了,无法手动复制所有键以在批处理执行语句中创建单独的语句),但我找不到一种方法来迭代所有应符合以下条件的项目WHERE 子句:BooleanTwo = false。
如何执行批处理执行语句来更新所有必须执行的项目,BooleanTwo = false
而BooleanTwo = true
无需手动输入表中的所有键?
通常,如果项目数量很少,我会这样做:
我想做这样的事情:
我怎样才能做到这一点?
sql - 透视 AWS Redshift SUPER 数据
我有以下表结构:
server_id | server_databases |
---|---|
1 | [{“name”:“mssql”,“count”:12},{“name”:“postgresql”,“count”:1}] |
2 | [] |
3 | 无效的 |
结果我想收到什么(我想保留服务器 2 和 3,如果它是 null 或空对象无关紧要):
server_id | 数据库 |
---|---|
1 | {“mssql”:12,“postgresql”:1} |
2 | 无效的 |
3 | 无效的 |
我尝试自己构建 json
但它因有趣的错误而失败
[XX000] 错误:由于内部错误,不支持查询。详细信息:不支持的见证案例 其中:nested_decorrelate_calc_witness_unsupported|calc_witness
看起来 PartiQL支持这种情况,但我不知道如何实现它。我现在将使用 UDF。但是,如果您可以帮助我提供“本机”解决方案,那就太棒了。
更新用于案例再现的 SQL 脚本:
amazon-web-services - 动态数据库 | 如果使用 PartiQL 项目尚不存在,如何更新项目?
我想对 dynamoDB 进行更新调用:
- 如果 ddb 项目存在,则更新现有字符串集的新值(添加而不是替换),
- 或者如果 ddb 项目尚不存在,则创建一个新项目。
- 但这两种情况都应该只用一个 api 调用来解决。
UpdateItem
通过使用以下操作,我目前可以做到这一点:
但我现在想切换到PartiQLExecuteStatement
,我通过操作使用提出了以下想法:
对于 PartiQL 解决方案,如果该项目确实存在,则一切都按预期工作,但如果该项目不存在,我会得到:
"400 Bad Request"/"The conditional request failed"
(因为密钥还不存在)
但我现在不想再次调用以在 PartiQL 下插入新项目,我宁愿只使用 1 个 API 调用来处理这两种情况,因为可以通过 UpdateItem 使用。
有什么想法可以在 PartiQL 下实现吗?
文件:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.update.html -> PartiQL 只有 SET 和 REMOVE https://docs.aws.amazon.com/amazondynamodb/latest/developerguide /Expressions.UpdateExpressions.html#Expressions.UpdateExpressions -> 较旧的 UpdateExpressions 具有 SET、REMOVE、ADD和 DELETE
(我在不使用 AWS SDK的情况下直接向dynamoDB 低级 api发出请求)
amazon-qldb - 应该如何在 Amazon QLDB 的 PartiQL 中定义主键?
我想在查询语言为 PartiQL 的 QLDB 中定义一个主键,如何将ID定义为主键?
PS,由于在《Amazon QLDB-开发者指南》的文档中写着“ QLDB支持开放内容,不强制schema,所以创建表的时候不要定义属性或数据类型。 ”,可能没有PRIMARY KEY存在在 PartiQL 中?