来自 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