问题标签 [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.

0 投票
0 回答
25 浏览

sql - 如何查询可用于存储为 SUPER 的列中的嵌套数据的键

我有一个 redshift 表,它有一列(SUPER 数据类型),其中包含嵌套的 json 数据,可以有 1..n 个嵌套,例如

该列有十亿多行,许多记录可能没有 3 或 4 级嵌套,具体取决于它是否在上游填充。

我想做一些与 postgres 上可用的 jsonb_object_keys(jsonb field) 等效的操作,以列出任何级别可用的键(不是值),因此在上面的块中它应该返回:

key1 key2 keyb k1a k2b

我在 partiql 中搜索了一个等效函数,但找不到。有人可以指出我正确的方向吗?

提前致谢

0 投票
1 回答
35 浏览

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 |
+------------+--------------+--------+-------+
这个数据方便用于报告目的。

0 投票
1 回答
29 浏览

amazon-web-services - 在 DynamoDB 中的整个表上运行 AWS 批处理执行语句

我在 DynamoDB 中有一个表,我需要更新其中的所有项目。每个项目都有一个键和多个带有布尔值的列。它看起来有点像这样:

钥匙 布尔值 布尔二
关键一 真的 真的
关键二 真的 错误的
关键三 真的 错误的

我有很多这样的项目(太多了,无法手动复制所有键以在批处理执行语句中创建单独的语句),但我找不到一种方法来迭代所有应符合以下条件的项目WHERE 子句:BooleanTwo = false。

如何执行批处理执行语句来更新所有必须执行的项目,BooleanTwo = falseBooleanTwo = true无需手动输入表中的所有键?

通常,如果项目数量很少,我会这样做:

我想做这样的事情:

我怎样才能做到这一点?

0 投票
1 回答
62 浏览

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 脚本:

0 投票
1 回答
25 浏览

amazon-web-services - 动态数据库 | 如果使用 PartiQL 项目尚不存在,如何更新项目?

我想对 dynamoDB 进行更新调用:

  1. 如果 ddb 项目存在,则更新现有字符串集的新值(添加而不是替换),
  2. 或者如果 ddb 项目尚不存在,则创建一个新项目。
  3. 但这两种情况都应该只用一个 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发出请求)

0 投票
1 回答
43 浏览

amazon-qldb - 应该如何在 Amazon QLDB 的 PartiQL 中定义主键?

我想在查询语言为 PartiQL 的 QLDB 中定义一个主键,如何将ID定义为主键?

PS,由于在《Amazon QLDB-开发者指南》的文档中写着“ QLDB支持开放内容,不强制schema,所以创建表的时候不要定义属性或数据类型。 ”,可能没有PRIMARY KEY存在在 PartiQL 中?