[英]ADF Data Flow Remove empty JSON objects and arrays when building JSON files
我在 Azure 數據工廠中使用數據流將 CSV 文件的行轉換為標准布局的 JSON 文檔。 當沒有數據要填充時,我不知道如何擺脫空的 JSON 對象和 arrays。
例如,如果我有如下所示的 CSV:
firstName,lastName,Email,Address1,City,State,Zip
Bob,Smith,someemail@email.com,123 st,Somecity,TX,12345
我需要把它變成這樣:
{
"firstName": "Bob",
"lastName": "Smith",
"contactData": [
{
"contactType": "postalAddress",
"contactData": {
"postalAddress1": "123 st",
"postalCity": "Somecity",
"postalState": "TX",
"postalCode": "12345"
}
},
{
"contactType": "email",
"contactData": {
"emailAddress": "someemail@email.com"
}
}
]
}
我正在使用派生列來構建子列和 arrays。我已經能夠生成上面的 JSON。 我遇到的問題是,如果 email 或地址是 null,我想從數組中刪除 object。 如果兩者都是 null,我想刪除整個 contactData object。
例子:
firstName,lastName,Email,Address1,City,State,Zip
Bob,Smith,,,,,
我需要把它變成這樣:
{
"firstName": "Bob",
"lastName": "Smith"
}
如果我使用 IF 語句將所有子對象設置為 NULL,我可以生成如下內容:
{
"firstName": "Bob",
"lastName": "Smith",
"contactData": [
{
"contactData": {}
},
{
"contactData": {}
}
]
}
但我無法擺脫整個部分。 Sink 將擺脫空字符串對象,但不會擺脫嵌套的 JSON 對象和 arrays。在 ADF 數據流中有什么方法可以做到這一點嗎?
[{
"firstName": "Bob",
"lastName": "Smith",
"contactData": [
{
"contactType": "postalAddress",
"contactData": {
"postalAddress1": "123 st",
"postalCity": "Somecity",
"postalState": "TX",
"postalCode": "12345"
}
},
{
"contactType": "email",
"contactData": {
"emailAddress": "someemail@email.com"
}
}
]
},
{
"firstName": "b1",
"lastName": "s1",
"contactData": [
{
"contactData": {}
},
{
"contactData": {}
}
]
},
{
"firstName": "Bob1",
"lastName": "Smith1",
"contactData": [
{
"contactType": "postalAddress",
"contactData": {
"postalAddress1": "123 st1",
"postalCity": "Somecity1",
"postalState": "TX1",
"postalCode": "123456"
}
},
{
"contactType": "email",
"contactData": {
"emailAddress": "someemail1@email.com"
}
}
]
},
{
"firstName": "b2",
"lastName": "s2",
"contactData": [
{
"contactData": {}
},
{
"contactData": {}
}
]
}]
contactType
的長度。 沒有任何contactType
的行將具有相同的長度(轉換為字符串並查找長度)。tp : length(toString(contactData.contactType))
contactType
(轉換為字符串)長度是否等於 2 來拆分數據。 拆分條件如下所示:length(toString(contactData.contactType))!=2
noContact
stream 將具有以下數據: condition : name!='contactData'
column name : $$
hasContact
和select1
stream 上按Name
應用聯合轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.