当我使用动态范围分区进行并发读取和写入时,ADF 中的复制活动出现错误

问题描述 投票:0回答:1

我一直在尝试通过具有直接到服务器视线的自托管 IR 使用复制活动将一些数据从 SQL Server 16 复制到 Snowflake。我试图在其中一列上启用动态范围分区,以便并行读取,但每次我尝试传递分区列(即使有/没有下限和上限)时,管道都会抛出以下错误 -

ErrorCode=InvalidParameter,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=属性“字典”的值无效:'值不能为空。参数名称:字典'.,Source=,''Type=System.ArgumentNullException,Message=Value 不能为空。

我检查了日志,正在创建的日志文件看起来像 -

sql_some_table_name_crt_ts_NA_09242023062959_0.txt

复制活动的解析输入如下 -

{
    "source": {
        "type": "SqlServerSource",
        "additionalColumns": [
            {
                "name": "ADF_RUN_ID",
            }
        ],
        "sqlReaderQuery": "select somecolumns (that includes crt_ts)  from some_table where ?DfDynamicRangePartitionCondition",
        "queryTimeout": "02:00:00",
        "isolationLevel": "ReadCommitted",
        "partitionOption": "DynamicRange",
        "partitionSettings": {
            "partitionColumnName": "crt_ts",
            "partitionUpperBound": "2024-10-16T12:59:59Z",
            "partitionLowerBound": "2022-09-01T00:00:00Z"
        }
    },
    "sink": {
        "type": "SnowflakeV2Sink",
        "preCopyScript": "",
        "importSettings": {
            "type": "SnowflakeImportCopyCommand",
            "additionalCopyOptions": {
                "ON_ERROR": "ABORT_STATEMENT"
            },
            "additionalFormatOptions": {
                "TIME_FORMAT": "'0:HH:MI:SS.FF7'"
            }
        }
    },
    "enableStaging": true,
    "stagingSettings": {
        "linkedServiceName": {
            "referenceName": "",
            "type": "LinkedServiceReference"
        },
        "path": "staging"
    },
    "enableSkipIncompatibleRow": false,
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
                "referenceName": "",
                "type": "LinkedServiceReference"
            },
            "path": "logging"
        }
    }

这让我觉得,虽然该活动在列出源时确实自行计算出上限和下限,但当它将其分割为范围时,第一个范围的下限将作为 NA 发送。这又给出了我看到的错误消息。

这感觉像是一个不可避免的错误。 谁能帮我弄清楚为什么我会收到此错误,或者是否有人以前遇到过此错误 - 您是如何解决的?

非常感谢!

sql-server azure snowflake-cloud-data-platform azure-data-factory sql-server-2016
1个回答
0
投票

,Message=属性“字典”的值无效:“值不能为空”。参数名称:字典'

我在我的环境中使用示例数据尝试了相同的操作,它工作正常,请检查您使用的数据是否正确。

上述错误可能由以下几个原因引起:

  • 管道中创建的参数和源中使用的参数区分大小写。为了避免这个问题,请在两个位置保持相同的参数名称
  • 检查分区边界(
    partitionLowerBound
    partitionUpperBound
    )的格式是否正确并落在您的数据范围内,如果它不在您的数据范围内,您可能会收到此类错误。
  • 检查静态值(在管道中对其进行硬编码)是否成功,然后尝试使用动态参数。

如果问题仍然存在,请在此处

提出支持票
© www.soinside.com 2019 - 2024. All rights reserved.