第一行(单元格)以行号开头:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
{'AccountID': '123456', 'CarrierID': '12-34-56', 'CarrierName': None, 'ControlID': None, 'ModifiedDate': '/Date(1401779596170-0400)/', 'OrderDate': '/Date(1401741929547-0400)/', 'OrderNumber': None, 'ShipToAddress': {'Address1': 'Road 4', 'Address2': None, 'Address3': None, 'Attention': ',', 'City': 'NY', 'ContactName': 'Johnson, John', 'Country': 'USA', 'EmailAddress': '[email protected]', 'PhoneNumber': '12345678', 'PostalCode': 'test', 'State': 'NJ'}, 'Status': 'Cancelled', 'Column1': 'test-abcd', 'Column2': 'test-abcd', 'Column3': 'test-abcd', 'Column4': 'hello test', 'Column5': ['1234-abcd'], 'Column6': 'test-abcd', 'ColumnNumber': '54321'},
{'AccountID': '123457', 'CarrierID': '12-34-57', 'CarrierName': None, 'ControlID': None, ..........
我的问题是如何将 ADF 中的它转换为一个简单的表(包含 AccountId、CarrierId、CarrierName 等列),以便可以将其下沉到 PostgreSQL?
ShipToAddress 列可以留空,但 Address1、Address2 等都应该是单独的列。最好将第 5 列中的括号去掉。
Bhavani,首先您需要将数据转换为正确的 JSON 文件。然后,您可以使用 ADF Dataflow 转换为您想要的格式并复制到目标表中。
首先使用您的 csv 文件创建一个分隔文本数据集并给出以下配置。
现在,使用以下设置对此数据集使用查找活动。
然后,使用具有以下表达式的数组集变量活动。
@json(replace(replace(replace(replace(string(activity('Lookup1').output.value),'"},{"Prop_0":"',','),'}"}]','}]'),'{"Prop_0":"',''),'None','null'))
设置的变量活动将给出所需的 JSON 数组。
现在,使用复制活动将此 JSON 数组复制到 JSON 文件中。您可以按照此
SO答案中的流程来执行此操作。
JSON 文件将如下创建。
创建所需的 JSON 后,创建一个 JSON 数据集并将其用作数据流中的源,并将 Postgres 表用作其中的接收器以实现您的要求。