点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我们目前正在与客户合作,以使用JSON文件流为S/4系统提供数据。 我们正在考虑使用HANA Json文档存储来实现此流。 在当前的PoC中,我们已经可以将数据馈入JSON集合中,并通过AMDP方法将该集合转移到暂存表中。
我们目前正在尝试对嵌套结构(尤其是数组)的处理进行原型设计。 例如,我们有一个collection policyIA,然后插入以下JSON文档:
{" policyID":" 000002" " type":"电机" ," personInsured": [{{" firstName":" Jane"," lastName":" Doe"},{" firstName":" John"," lastName":" Doe"}] }
我们希望将数据转移到两个表中。 一个带有policyId和type字段的头表,一个带有两个人在嵌套数组中的条目的被保险人表。 第一个表没有问题。 但是,有什么方法可以将数组转换为表结构吗?
我们尝试了JSON_TABLE函数,但到目前为止,该函数只有错误。 首先,我们尝试了以下语句:
SELECT pi。* FROM JSON_TABLE(policyIA,'$ .personInsured' 栏(FIRST_NAME VARCHAR(50)PATH'$ .firstName', LAST_NAME VARCHAR(50)PATH'$ .lastName'))AS pi;
此语句为我们带来了以下错误:
错误:(dberror)8-无效参数:列必须以表为前缀:第8行col 29(在pos 29处)
我们也尝试了以下语句:
SELECT pi。* FROM JSON_TABLE(policyIA.policyIA,'$ .personInsured' 栏(FIRST_NAME VARCHAR(50)PATH'$ .firstName' ,LAST_NAME VARCHAR(50)PATH'$ .lastName'))AS pi;
错误:(dberror)7-不支持的功能:JsonTable不支持DocStore:第8行第29行(在pos 29)
有人对这里出了什么问题有想法吗,或者对如何将数组中的数据传输到表有其他想法吗?
出现错误消息,因为默认情况下JSON_TABLE函数不支持JSON文档存储。 JSON_TABLE函数的第一个参数必须是表的列名(例如,当您有一个包含id列和包含json字符串的字符串列的表时,必须将json字符串列设置为第一个参数)。
但是您可以使用CTE即时从文档存储中"创建"这样的列。 例如如下所示:
PS:就像一个侧面标记。 所描述的将数据输入系统的方法听起来有些麻烦。 您是否考虑过为此使用SDI?
嗨,弗洛里安,
非常感谢您的回答。 SQL对我们有用。
关于一种更简单的方法,客户目前正在构建其数据中心,第一个想法是通过文件传输json数据。 为此,JSON文档存储和通过AMDP传输似乎是我们最简单的方法。 我们正在将数据馈入BW环境(FPSL的一部分)中,并且在那里可以使用ETL处理方面有很多选择。 因此,对我们来说很难证明SDI的额外许可费用是合理的。 但是一旦我们确定了集成要求,这种情况可能会改变。
再次感谢
雨者
一周热门 更多>