У меня есть большой файл (csv), в котором данные выглядят как
"Data Definition Catalog"|"Accounting Entry **;** sda Message Id"|"dsds"|"6/23/2016"|"Pdas"|"Paytrtr"|"faasd"|"Betalen & Sparen"|"CNA"|"8/1/2016"|"Data Attribute"|"Bok"|"Unsdfdsf"|""|"fdsfdfdsf"|"fdsfdsfsdggrrg"|""|"**hello semicolon ; kskdsldss.**"|"dsasa"|"Payment Engine"|"A35"|""|"Approved"|"No"|"No"|"N"|"N"|"N"|"N"|"N"|"ffrr"|""|"8/1/2016"|""|""|""|""|""|""|""|""|""
Я использую компонент сообщения преобразования для преобразования этого списка в формат csv, но получаю сообщение об ошибке, что null не может быть приведен к строке. При дальнейшем просмотре ввода я чувствую: (символ точки с запятой выделен жирным шрифтом) создает проблему и делает все последующие кортежи пустыми. Я немного смущен. Кто-нибудь может сообщить мне, как это решить?
Ошибка преобразования сообщения в дату отправки (null не может быть приведено к строке), потому что после точки с запятой все становится нулевым / пустым, я предполагаю из ввода
%dw 1.0
%output application/csv separator=",",escape=";", quoteValues=true
%function getBoolean(aString) (
aString match {
:null -> null,
s is :string -> ((s contains "Yes") or (s contains "Y")),
default -> null
}
)
%function convertToBoolean(s) (
s match {
"Yes" -> "true",
"No" -> "false",
"Y" -> "true",
"N" -> "false"
}
)
---
payload map ((payload01 , indexOfPayload01) -> {
Name: payload01.Attribute_Name,
TechnicalName: payload01.Technical_Name,
SubmissionDate: (payload01.Submission_Date as :date{format:"M/d/yyyy"} as :string{format:"yyyy-MM-dd"}) when (payload01.Submission_Date as :string) contains "/" otherwise (payload01.Submission_Date as :date{format:"d-M-yyyy"} as :string{format:"yyyy-MM-dd"}),
DefinitionOwner: payload01.Definition_Owner,
DataSteward: payload01.Data_Steward,
SubmittedBy: payload01.Submitted_By,
SourceHub: payload01.Source_Hub,
SourceApplicationEntity: payload01.Source_Application_Entity,
PublicationDate: (payload01.Publication_Date as :date{format:"M/d/yyyy"} as :string{format:"yyyy-MM-dd"}) when (payload01.Publication_Date as :string) contains "/" otherwise (payload01.Publication_Date as :date{format:"d-M-yyyy"} as :string{format:"yyyy-MM-dd"}),
ObjectType: payload01.Object_Type,
Nameinnativelanguage: payload01.Name_in_native_language,
Descriptioninnativelanguage: payload01.Description_in_native_language,
BusinessRuleinnativelanguage: payload01.Business_Rule_in_native_language,
Notesinnativelanguage: payload01.Notes_in_native_language,
Description: payload01.Description,
BusinessRule: payload01.Business_Rule,
Notes: payload01.Notes,
PrimaryDomain: payload01.Primary_Domain,
Subdomain: payload01.Subdomain,
LogicalDataType: payload01.Technical_Data_Type,
ValueRange: payload01.Value_Range,
Status: "Legacy" when payload01.Status contains "Legacy" otherwise payload01.Status,
IsCritical: getBoolean(payload01.Is_Critical) as :string as :boolean,
IsPrivacySensitive: getBoolean(payload01.Is_Privacy_Sensitive) as :string as :boolean,
IndirectlyIdentifyingPersonalInformation: getBoolean(payload01.Indirectly_Identifying_Personal_Information) as :string as :boolean,
DirectlyIdentifyingPersonalInformation: getBoolean(payload01.Directly_Identifying_Personal_Information) as :string as :boolean,
SensitivePersonalInformation: getBoolean(payload01.Sensitive_Personal_Information) as :string as :boolean,
SensitiveFinancialInformation: getBoolean(payload01.Sensitive_Financial_Information) as :string as :boolean,
SensitiveSecurityInformation: getBoolean(payload01.Sensitive_Security_Information) as :string as :boolean,
PrivacyStatus: payload01.Privacy_Status,
PrivacyComment: payload01.Privacy_Comment,
LastUpdateDate: (payload01.Last_Update_Date as :date{format:"M/d/yyyy"} as :string{format:"yyyy-MM-dd"}) when (payload01.Last_Update_Date as :string) contains "/" otherwise (null when (payload01.Last_Update_Date as :string) == "" otherwise payload01.Last_Update_Date as :date{format:"d-M-yyyy"} as :string{format:"yyyy-MM-dd"}),
ReviewRemarks : payload01.Review_Remarks,
AssetType:p('asset.dataAttributes.type.id'),
Domain: p('domain.name'),
Community:p('community.name'),
DataModel:payload01.Name,
PhysicalcolumnName: payload01.Technical_Name,
DomainColumn:p('domain.name.PhysicalDataDictionary'),
CommunityColumn:"DIH",
DeepLink:p('powerdesigner.deeplink'),
ExampleValue:payload01.Example_Value
})