Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我正在尝试使用python sql访问存储在雪花表中的数据。下面是我想要访问的列_Sql_Python 3.x_Snowflake Cloud Data Platform - Fatal编程技术网

我正在尝试使用python sql访问存储在雪花表中的数据。下面是我想要访问的列

我正在尝试使用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": [

下面是数据示例,我想访问列值,开始。我将这些数据转储到stg表的一列DN中

{
    "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将其转换为字符串。我已经更新了我的答案谢谢,我也会尝试。