来自 XML 源的 ADF 管道格式日期时间
ADF Pipeline format datetime from XML source
我有一个以 xml 文件作为源的 Azure 数据工厂管道。目标接收器是一个包含日期时间列的 Oracle table。
大多数列的映射很简单,如下所示:
我的问题是映射到“SupplyDate”
这需要来自具有以下路径的源列:
$[\'ns0:PayReqInvoice\'][\'Invoices\'][\'Invoice\'][0][\'DateOfSupply\']
我试过使用“添加动态内容”编辑器来包装 @formatDateTime 函数,如下所示:
但这给出了“无法识别的表达式”异常。
请参阅下面的失败示例 xml:
<?xml version="1.0"?>
<ns0:PayReqInvoice xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="https://acme.smartplatform.net/">
<Invoices>
<Invoice>
<SupplierReference>123456</SupplierReference>
<SupplierInvoiceReference>JH Test Shay OT 2</SupplierInvoiceReference>
<RecipientInvoiceReference>S124366</RecipientInvoiceReference>
<DateInvoiceIssued>10/5/2021</DateInvoiceIssued>
<InvoiceNetTotal>20.00</InvoiceNetTotal>
<InvoiceVATTotal>5.00</InvoiceVATTotal>
<DateOfSupply>30/09/2021</DateOfSupply>
<InvoiceYear>2021</InvoiceYear>
<InvoiceDetails>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923534 user job 1188237</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923534 user job 1188238</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
</InvoiceDetails>
</Invoice>
<Invoice>
<SupplierReference>123456</SupplierReference>
<SupplierInvoiceReference>Shay OT test3</SupplierInvoiceReference>
<RecipientInvoiceReference>S124366</RecipientInvoiceReference>
<DateInvoiceIssued>10/7/2021</DateInvoiceIssued>
<InvoiceNetTotal>20.00</InvoiceNetTotal>
<InvoiceVATTotal>5.00</InvoiceVATTotal>
<DateOfSupply>01/10/2021</DateOfSupply>
<InvoiceYear>2021</InvoiceYear>
<InvoiceDetails>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923535 user job 1188239</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923535 user job 1188240</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
</InvoiceDetails>
</Invoice>
</Invoices>
</ns0:PayReqInvoice>
在复制数据 activity Additional columns 中,您不能通过动态表达式来使用现有列的函数。
使用动态内容,您只能添加系统变量、函数、管道变量和参数。
您可以在其他列中使用 $$COLUMN
并按原样 select 现有列,但不能向该现有列动态添加表达式和函数。
目前,没有选项可以使用复制数据 activity 更改 XML 源数据的数据类型。
加载到接收器后可以更改格式或者您可以尝试使用数据流activity解析源数据并使用派生列转换更改数据类型并将其复制到接收器。
有关详细信息,请参阅此 MS document。
我有一个以 xml 文件作为源的 Azure 数据工厂管道。目标接收器是一个包含日期时间列的 Oracle table。
大多数列的映射很简单,如下所示:
我的问题是映射到“SupplyDate”
这需要来自具有以下路径的源列:
$[\'ns0:PayReqInvoice\'][\'Invoices\'][\'Invoice\'][0][\'DateOfSupply\']
我试过使用“添加动态内容”编辑器来包装 @formatDateTime 函数,如下所示:
但这给出了“无法识别的表达式”异常。
请参阅下面的失败示例 xml:
<?xml version="1.0"?>
<ns0:PayReqInvoice xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="https://acme.smartplatform.net/">
<Invoices>
<Invoice>
<SupplierReference>123456</SupplierReference>
<SupplierInvoiceReference>JH Test Shay OT 2</SupplierInvoiceReference>
<RecipientInvoiceReference>S124366</RecipientInvoiceReference>
<DateInvoiceIssued>10/5/2021</DateInvoiceIssued>
<InvoiceNetTotal>20.00</InvoiceNetTotal>
<InvoiceVATTotal>5.00</InvoiceVATTotal>
<DateOfSupply>30/09/2021</DateOfSupply>
<InvoiceYear>2021</InvoiceYear>
<InvoiceDetails>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923534 user job 1188237</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923534 user job 1188238</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
</InvoiceDetails>
</Invoice>
<Invoice>
<SupplierReference>123456</SupplierReference>
<SupplierInvoiceReference>Shay OT test3</SupplierInvoiceReference>
<RecipientInvoiceReference>S124366</RecipientInvoiceReference>
<DateInvoiceIssued>10/7/2021</DateInvoiceIssued>
<InvoiceNetTotal>20.00</InvoiceNetTotal>
<InvoiceVATTotal>5.00</InvoiceVATTotal>
<DateOfSupply>01/10/2021</DateOfSupply>
<InvoiceYear>2021</InvoiceYear>
<InvoiceDetails>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923535 user job 1188239</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
<InvoiceDetail>
<ItemDescription>Paying journey Id 923535 user job 1188240</ItemDescription>
<NetCharge>10.00</NetCharge>
<RevenueAccountCode>
<Costcentre>12345</Costcentre>
<SubCostcentre1>678</SubCostcentre1>
<SubCostcentre2>901</SubCostcentre2>
<Votecode>234</Votecode>
<Subcode>11</Subcode>
</RevenueAccountCode>
</InvoiceDetail>
</InvoiceDetails>
</Invoice>
</Invoices>
</ns0:PayReqInvoice>
在复制数据 activity Additional columns 中,您不能通过动态表达式来使用现有列的函数。
使用动态内容,您只能添加系统变量、函数、管道变量和参数。
您可以在其他列中使用 $$COLUMN
并按原样 select 现有列,但不能向该现有列动态添加表达式和函数。
目前,没有选项可以使用复制数据 activity 更改 XML 源数据的数据类型。
加载到接收器后可以更改格式或者您可以尝试使用数据流activity解析源数据并使用派生列转换更改数据类型并将其复制到接收器。
有关详细信息,请参阅此 MS document。