如何将HTTP转换的HTTPOutput解析为PowerCenter中的目标表?

时间:2017-04-06 21:22:19

标签: regex informatica informatica-powercenter

我正在使用HTTP转换来调用REST Web服务。

我遇到的问题是如何将HTTPOutput映射到SQL Server表的相应字段?我可以通过Expression拆分HTTPOutput吗?如果是,我该如何拆分呢。

这将是我得到的回复(这只是一个样本回复

  

{“Response”:{“ns0:Resp”:{“xmlns:ns0”:“UserIDRespone”,
  “ns0:messageStatus”:{“ns0:StatusRequest”:“SUCCESS”},
  “ns0:payload”:{         “ns0:lowerUserIDresp”:“100001”,         “ns0:HigherUserIDresp”:“100005”}

我的目标表将包含以下字段:

  • lowerUserID
  • HigherUserId
  • 状态

映射应如下所示:

  • StatusRequest =状态
  • lowerUserIDresp = lowerUserID
  • HigherUserIDresp =状态

你能帮我解决这个问题。

感谢您的帮助!谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来实现相同的目标。正则表达式将是

.*StatusRequest": "(\w*).*lowerUserIDresp": "(\w*).*HigherUserIDresp": "(\w*).*

要了解正则表达式的工作原理,请查看http://regexr.com/3fn2o

  

如何在Informatica中实现此正则表达式

让我们说保存httpOutput的列名是in_HTP_RESPONSE

因此,请在Informatica中使用正则表达式函数REG_EXTRACT。创建表达式转换并创建3个可变端口。表达条件是

  • v_StatusRequest = REG_EXTRACT(in_HTP_RESPONSE,'.*StatusRequest": "(\w*).*lowerUserIDresp": "(\w*).*HigherUserIDresp": "(\w*).*',1)

  • v_lowerUserIDresp = REG_EXTRACT(in_HTP_RESPONSE,'.*StatusRequest": "(\w*).*lowerUserIDresp": "(\w*).*HigherUserIDresp": "(\w*).*',2)

  • v_HigherUserIDresp = REG_EXTRACT(in_HTP_RESPONSE,'.*StatusRequest": "(\w*).*lowerUserIDresp": "(\w*).*HigherUserIDresp": "(\w*).*',3)

现在您可以将它们用作输出端口,或者您可以将整数值转换为integer并插入目标。

答案 1 :(得分:0)

Yo可以在Java转换中为JSON Parser编写一个java代码。您可以解析任何键值并将其添加到任何列中。

Refrence :: http://www.oracle.com/technetwork/articles/java/json-1973242.html