gpt4 book ai didi

如果 key 不存在,Azure Cosmos UDF 将返回默认值

转载 作者:行者123 更新时间:2023-12-02 07:25:40 26 4
gpt4 key购买 nike

我在 Cosmos 中有一个文档结构,通常如下所示:

{
"Item No": "123456",
"Item Desc": "This is a description",
"images": [
"https://somedomain.com/image1.png",
"https://somedomain.com/image2.png"
]
}

有时,图像值会为空。我编写了一个 UDF(用户定义函数),它将用默认值替换任何空值:

function missingImage(doc, prop) {
if (typeof doc[prop] === "undefined" || doc[prop] === "" || doc[prop] === null) {
return "https://via.placeholder.com/150";
}
}

如果图像网址为空,我会得到此返回(正确):

{
"id": "e3842b29-313c-4a84-bc94-bc43a9a55742",
"Item No": "123456",
"Item Desc": "This is a description.",
"image": "https://via.placeholder.com/150"
},

我的 SELECT 查询如下所示:

“c.id, c['项目编号'], c['项目描述'], udf.missingImage(c.images[0]) 作为图像”

但是,在根本不存在图像 key 的情况下,例如:

{
"Item No": "123456",
"Item Desc": "This is a description."
}

我没有恢复默认设置。

我的问题:如何修改我的 UDF 或查询,以便在 images 键不存在的情况下仍返回默认值?

最佳答案

感谢 @jay-gong 您的时间和回复,但这并不能解决问题。我正在寻找一种在文档中根本不存在 images 键时返回默认值的方法。

我觉得这里的答案不会通过 UDF,而是需要在查询级别解决。我基于这样一个事实:如果我直接返回默认值(正如您将在下面的 UDF 示例中看到的那样),无论如何我都不会返回images

Cosmos 中的文档:

{
"id": "8fdc9f47-6209-455d-9b9c-482341bb3170",
"Item No": "123456",
"Item Desc": "This is a description."
}

UDF:

function missingImage(images) {
return "https://via.placeholder.com/150";
}

查询:

SELECT c.id, c['Item No'], c['Item Desc'], udf.missingImage(c.images) FROM c

返回:

[
{
"id": "8fdc9f47-6209-455d-9b9c-482341bb3170",
"Item No": "123456",
"Item Desc": "This is a description."
}
]

更新:我想出了一个解决方案,即使用 IS_DEFINED 来检查 images 键是否已定义。如果不是,则返回 false,这会为我提供在 UDF 中执行操作的内容。

查询:

SELECT c.id,
c['Item No'],
c['Item Desc'],
udf.missingImage((IS_DEFINED(c.images) = true ? c.images : false))
FROM c

UDF:

function missingImage(images) {
if (images == false) {
return "https://via.placeholder.com/150";
}
return images;
}

关于如果 key 不存在,Azure Cosmos UDF 将返回默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55010622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com