我正在尝试使用python sql访问存储在雪花表中的数据。下面是我想要访问的列
下面是数据示例,我想访问列值,开始。我将这些数据转储到stg表的一列DN中我正在尝试使用python sql访问存储在雪花表中的数据。下面是我想要访问的列,sql,python-3.x,snowflake-cloud-data-platform,Sql,Python 3.x,Snowflake Cloud Data Platform,下面是数据示例,我想访问列值,开始。我将这些数据转储到stg表的一列DN中 { "ok": true, "metrics": [ { "name": "t_in", "data": [{"value": 0, "group": {"start": "00:00"}}] }, { "name": "t_out", "data": [
{
"ok": true,
"metrics": [
{
"name": "t_in",
"data": [{"value": 0, "group": {"start": "00:00"}}]
},
{
"name": "t_out",
"data": [{"value": 0,"group": {"start": "00:00"}}]
}
]
}
考虑存储在同一列不同行中的许多行
下面的查询仅获取名称的数据。我还想访问其他列的值。此查询是python脚本的一部分
select
replace(DN : metrics[0].name , '"' , '')as metrics_name, #able to get
replace(DN : metrics[2].data , '"' , '')as metrics_data_value,##suggestion needed
replace(DN : metrics.data.start, '"','') as metrics_start, ##suggestion needed
replace(DN : metrics.data.group.finish, '"','') as metrics_finish, ##suggestion needed
from stg
我需要迭代数据和组吗?如果是,请提供代码。以下是如何查询该数据的示例 设置示例数据: 创建或替换瞬态表test_db.public.stg DN变量; 在test_db.public.stg DN中插入覆盖 选择parse_json'{ 好的,没错, 指标:[ { 姓名:杜英, 数据:[ {值:0,组:{开始:00:00} ] }, { 姓名:t_out, 数据:[ {值:0,组:{开始:00:00} ] } ] }'; 选择语句示例: 选择 DN:度量[0]。名称::字符串, DN:度量[1]。数据, DN:度量[1]。数据[0]。组。开始::时间, DN:度量[1]。数据[0]。组。完成::时间 来自test_db.public.stg; 我认为您不需要查询JSON数组的单个索引,而应该使用文档中的flatte函数 下面是您如何使用Flatte的方法,我猜这就是您想要的: 选择 mtr.value:name::string, dta.value, dta.value:group.start::string, dta.value:group.finish::string 从test_db.public.stg stg, 横向输入=>stg.DN:metrics mtr, 横向输入=>mtr.值:数据dta
下面是一个如何查询该数据的示例 设置示例数据: 创建或替换瞬态表test_db.public.stg DN变量; 在test_db.public.stg DN中插入覆盖 选择parse_json'{ 好的,没错, 指标:[ { 姓名:杜英, 数据:[ {值:0,组:{开始:00:00} ] }, { 姓名:t_out, 数据:[ {值:0,组:{开始:00:00} ] } ] }'; 选择语句示例: 选择 DN:度量[0]。名称::字符串, DN:度量[1]。数据, DN:度量[1]。数据[0]。组。开始::时间, DN:度量[1]。数据[0]。组。完成::时间 来自test_db.public.stg; 我认为您不需要查询JSON数组的单个索引,而应该使用文档中的flatte函数 下面是您如何使用Flatte的方法,我猜这就是您想要的: 选择 mtr.value:name::string, dta.value, dta.value:group.start::string, dta.value:group.finish::string 从test_db.public.stg stg, 横向输入=>stg.DN:metrics mtr, 横向输入=>mtr.值:数据dta
我认为你的JSON有问题,它是无效的。下面是JSON在我的查询中,我加了一个引号:{metrics:[{name:t\u in,data:[{value:0,group:{start:00:00}]},{name:t\u out,data:[{value:0,group:{start:00:00}]}}我认为你的JSON有问题,它是无效的。下面是JSON在我的查询中,我加了一个引号:{metrics:[{name:t_-in,data:[{value:0,group:{start:00:00}]},{name:t_-out,data:[{value:0,group:{start:00:00}]}上面的查询工作得很好。剩下的唯一问题是errorFailed将变量值24:00转换为TIME,因为在数据中,我们在组中也有start:00.00。有什么建议吗?非常感谢你的帮助!24:00不是一个有效的时间,但是如果您只需要字符串,那么可以使用::string将其转换为字符串。我已经更新了我的答案谢谢,我也会尝试。上面的查询很好。剩下的唯一问题是errorFailed将变量值24:00转换为TIME,因为在数据中,我们在组中也有start:00.00。有什么建议吗?非常感谢你的帮助!24:00不是一个有效的时间,但是如果您只需要字符串,那么可以使用::string将其转换为字符串。我已经更新了我的答案谢谢,我也会尝试。