Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
Mysql 通过SQL从某些行创建json列_Mysql_Sql_Json_Apache Spark Sql - Fatal编程技术网

Mysql 通过SQL从某些行创建json列

Mysql 通过SQL从某些行创建json列,mysql,sql,json,apache-spark-sql,Mysql,Sql,Json,Apache Spark Sql,我正在尝试使用SQL(Spark SQL 3.0,databricks runtime 7.0)从现有表创建一个新表。 我想将一个特定列的一些行聚合到新表中的json列中 现有表格 id, year, month, val u_ced 2002 05 v_scyronc u_ced 2002 05 v_ytbtbdv u_ced 2002 05 v_utncasx u_pny 2005 07 v_opcrgae u_pny

我正在尝试使用SQL(Spark SQL 3.0,databricks runtime 7.0)从现有表创建一个新表。 我想将一个特定列的一些行聚合到新表中的json列中

现有表格

id,     year,  month, val
u_ced    2002   05    v_scyronc
u_ced    2002   05    v_ytbtbdv
u_ced    2002   05    v_utncasx
u_pny    2005   07    v_opcrgae
u_pny    2005   07    v_wytnecs 

               
我需要一张像这样的新桌子

id,       val_json
u_ced     {{"shown": true, "val_id": "v_scyronc" },
          {"shown": true, "val_id": "v_ytbtbdv" },
          {"shown": true, "val_id": "v_utncasx" },
          {"shown": true, "val_id": "v_opcrgae" },
          {"shown": true, "val_id": "v_wytnecs" }
         }} 

 u_pny    {{"shown": true, "val_id": "v_opcrgae" },
          {"shown": true, "val_id": "v_wytnecs" }              
         }} 
我想我需要一个“groupby”,但我不知道如何创建json列

我试过:

SELECT json_object(array_agg(id), array_agg(val)) 
但是,我有一个错误:

 Error in SQL statement: AnalysisException: Undefined function: 'json_object'. 
  This function is neither a registered temporary function nor a permanent function registered in the database 'default'
希望有人能在这方面帮助我


谢谢

Spark SQL没有函数“json\u object”

看这个


函数
to_json
collect_list
concat_ws
可能有用。

这可能有用-


df.show(假)
df.printSchema()
/**
* +-----+-----+------+---------+
*| id,|年,|月,| val|
* +-----+-----+------+---------+
*| u ced | 2002 | 5 | v|u scrync|
*| u ced | 2002 | 5 | v|u ytbtbdv|
*| u ced | 2002 | 5 | v|u utncasx|
*| u|pny | 2005 | 7 | v|u opcrgae|
*| u|pny | 2005 | 7 | v|u wytnecs|
* +-----+-----+------+---------+
*
*根
*|--id,:字符串(nullable=true)
*|--year,:整数(nullable=true)
*|--month,:整数(nullable=true)
*|--val:string(nullable=true)
*/
df.带柱(“显示”,亮起(真实))
.WithColumnRename(“val”、“val\u id”)
.withColumn(“val_json”、struct(col(“显示”)、col(“val_id”))
.groupBy(“id”)
.agg(collect_list(“val_json”).as(“val_json”))
。选择(col(“id”)到_json(col(“val_json”)。作为(“val_json”))
.show(假)
/**
* +-----+-------------------------------------------------------------------------------------------------------------+
*| id | val|u json|
* +-----+-------------------------------------------------------------------------------------------------------------+
*| u_pny |[{“显示”:真,“val_id”:“v_opcrgae”},{“显示”:真,“val_id”:“v_wytnecs”}]|
*| u|ced |[{“显示”:true,“val_id”:“v_scyronc”},{“显示”:true,“val_id”:“v_ytbtbdv”},{“显示”:true,“val_id”:“v_utncasx”}]|
* +-----+-------------------------------------------------------------------------------------------------------------+
*/

按照建议检查您的postgresql版本。我知道这不是您的主要问题,但消息错误早于您的目标。