点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
也许您也遇到过这样的话题。
将数据从大JSON传输到HANA中的关系表,然后使用SQL消耗存储的信息。
1。 在HANA中创建一个表以存储JSON信息。
2。 使用SQL提取数据并到结果表。
这是我的解决方案:
给出下面的JSON文件,我想通过在HANA中使用一些SQL访问信息。
{ "元数据":{ " language":" de-DE", " transaction_id":" 1511335024960:1650367502", " version":" 1", "纬度":37.54, "经度":5.58, "单位":" m", " expire_time_gmt":1511335872, "状态码":200 }, "预测":[ { " class":" fod_long_range_daily", " expire_time_gmt":1511335872, " fcst_valid":1511330400, "夜晚":{ " fcst_valid":1511373600, " fcst_valid_local":" 2017-11-22T19:00:00 + 0100", " day_ind":" N" }, "天": { " fcst_valid":1511330400, " fcst_valid_local":" 2017-11-22T07:00:00 + 0100", " day_ind":" D" } } ] } ');
我创建了一个表" CREATE TABLE
可以使用以下SQL访问嵌套信息:
-从具有嵌套列的常规列中选择 选择 * 来自JSON_TABLE(.FoD.B," $" 列 ( RN出于普通性, language_code NVARCHAR(50)PATH'$ .metadata.language', transaction_id NVARCHAR(50)PATH'$ .metadata.transaction_id', 版本NVARCHAR(50)PATH'$ .metadata.version', 纬度NVARCHAR(50)PATH'$ .metadata.latitude', 经度NVARCHAR(50)PATH'$ .metadata.longitude', 单位NVARCHAR(50)PATH'$ .metadata.units', expire_time_gmt NVARCHAR(50)PATH'$ .metadata.expire_time_gmt', status_code NVARCHAR(50)PATH'$ .metadata.status_code', -从"预测"部分中提取信息 嵌套路径" $ .forecasts [*]" 列 ( class NVARCHAR(50)PATH'$ .class', -从"夜晚"部分提取信息,作为"预测"部分的一部分 嵌套路径" $ .night" 列 ( fcst_valid_local_night NVARCHAR(24)路径'$ .fcst_valid_local', night_ind NVARCHAR(1)路径'$ .day_ind') , -从"天"部分中提取信息作为"预测"部分的一部分 嵌套路径" $ .day" 列 ( fcst_valid_local_day NVARCHAR(24)PATH'$ .fcst_valid_local', day_ind NVARCHAR(1)PATH'$ .day_ind') ) ) )AS JT;
为了避免从上方扩展名为" _day"和" _night"的" fcst_valid_local"列,我曾经使用UNION合并了"预测"的" day"和" night"部分的提取。
选择 * 来自( 选择 * 从JSON_TABLE(.FoD.B, " $"列(RN为序号, language_code NVARCHAR(50)PATH'$ .metadata.language', transaction_id NVARCHAR(50)PATH'$ .metadata.transaction_id', 版本NVARCHAR(50)PATH'$ .metadata.version', 纬度NVARCHAR(50)PATH'$ .metadata.latitude', 经度NVARCHAR(50)PATH'$ .metadata.longitude', 单位NVARCHAR(50)PATH'$ .metadata.units', expire_time_gmt NVARCHAR(50)PATH'$ .metadata.expire_time_gmt', status_code NVARCHAR(50)PATH'$ .metadata.status_code', -从"预测"部分中提取信息 嵌套路径" $ .forecasts [*]"列(类NVARCHAR(50)路径" $ .class", -从"夜晚"部分提取信息,作为"预测"部分的一部分 嵌套路径'$ .night'列(fcst_valid_local NVARCHAR(24)路径'$ .fcst_valid_local', ind NVARCHAR(1)路径'$ .day_ind'))))AS JT_night 联盟 选择 * 从JSON_TABLE( .FoD.B, " $"列(RN为序号, language_code NVARCHAR(50)PATH'$ .metadata.language', transaction_id NVARCHAR(50)PATH'$ .metadata.transaction_id', 版本NVARCHAR(50)PATH'$ .metadata.version', 纬度NVARCHAR(50)PATH'$ .metadata.latitude', 经度NVARCHAR(50)PATH'$ .metadata.longitude', 单位NVARCHAR(50)PATH'$ .metadata.units', expire_time_gmt NVARCHAR(50)PATH'$ .metadata.expire_time_gmt', status_code NVARCHAR(50)PATH'$ .metadata.status_code', -从"预测"部分中提取信息 嵌套路径" $ .forecasts [*]"列(类NVARCHAR(50)路径" $ .class", -从"天"部分中提取信息作为"预测"部分的一部分 嵌套路径'$ .day'列(fcst_valid_local NVARCHAR(24)路径'$ .fcst_valid_local', ind NVARCHAR(1)PATH'$ .day_ind'))))AS JT_day)
有什么想法可以更优雅地实现吗?
致谢
Dio。
请您说明如何使用JSON_TABLE函数访问JSON中的"预测"数组,以便能够检查您可能做错了什么。
一周热门 更多>