标签: azure-data-factory

如何使用复制活动中的预复制脚本根据源中的更改跟踪表删除接收器中的记录?

我正在尝试使用更改跟踪将数据从 SQL Server 增量复制到 Azure SQL 数据库。我遵循了Microsoft Azure 文档上的教程,但是在为大量表实施此教程时遇到了一些问题。

在复制活动的源部分,我可以使用一个查询,该查询为我提供自上次更改跟踪版本以来更新、插入或删除的所有记录的更改表。这张桌子看起来像

PersonID   Age    Name   SYS_CHANGE_OPERATION
---------------------------------------------
1          12     John   U
2          15     James  U
3          NULL   NULL   D
4          25     Jane   I
Run Code Online (Sandbox Code Playgroud)

PersonID 是该表的主键。

问题是复制活动只能将数据附加到 Azure SQL 数据库,因此当记录更新时,由于主键重复,它会给出错误。我可以通过让复制活动使用将数据合并到 Azure SQL 数据库上的表的存储过程来处理这个问题,但问题是我有大量的表。

我希望预复制脚本删除 Azure SQL 数据库上已删除和更新的记录,但我不知道如何执行此操作。我是否需要为要复制的每个表创建单独的存储过程和相应的表类型,或者有没有办法让预复制脚本根据更改跟踪表删除记录?

sql-server azure-data-factory azure-sql-database azure-data-factory-2

5
推荐指数
1
解决办法
1万
查看次数

确保在 Azure Data Lake Store 帐户中正确配置了 ACL 和防火墙规则

我正在使用复制数据工具使用 Azure 数据工厂将 CSV 文件从 Azure blob 处理到 Azure Data Lake。我正在关注此链接:https : //docs.microsoft.com/en-us/azure/data-factory/quickstart-create-data-factory-copy-data-tool

Fron Copy 数据工具我的源配置和测试连接成功。但是,目标连接(即数据湖)正在产生问题。

我收到错误消息:确保在 Azure Data Lake Store 帐户中正确配置了 ACL 和防火墙规则。

我按照此链接进行 Fairwall 设置:https ://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-secure-data (设置数据访问的 IP 地址范围)

启用公平墙并允许访问 Azure 服务“ON”

尽管如此,我还是遇到了同样的错误。任何人都可以请建议。如何解决这个问题?

azure azure-data-factory azure-data-lake

5
推荐指数
2
解决办法
5607
查看次数

使用 utcnow() 作为管道参数的 Azure 数据工厂 v2

对于上下文,我目前有一个 Data Factory v2 管道,其中有一个ForEach Activity调用Copy Activity。该复制活动只是从FTP服务器到Blob存储容器复制数据。

这是管道 json 文件:

{
    "name": "pipeline1",
    "properties": {
        "activities": [
            {
                "name": "ForEach1",
                "type": "ForEach",
                "typeProperties": {
                    "items": {
                        "value": "@pipeline().parameters.InputParams",
                        "type": "Expression"
                    },
                    "isSequential": true,
                    "activities": [
                        {
                            "name": "Copy1",
                            "type": "Copy",
                            "policy": {
                                "timeout": "7.00:00:00",
                                "retry": 0,
                                "retryIntervalInSeconds": 30,
                                "secureOutput": false
                            },
                            "typeProperties": {
                                "source": {
                                    "type": "FileSystemSource",
                                    "recursive": true
                                },
                                "sink": {
                                    "type": "BlobSink"
                                },
                                "enableStaging": false,
                                "cloudDataMovementUnits": 0
                            },
                            "inputs": [
                                {
                                    "referenceName": …
Run Code Online (Sandbox Code Playgroud)

azure azure-data-factory azure-data-factory-2

5
推荐指数
2
解决办法
2万
查看次数

如何保存数据工厂存储过程输出

每当我在 ADFv2 中执行存储过程时,它都会给我一个输出

{
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (Australia Southeast)",
    "executionDuration": 34 
}
Run Code Online (Sandbox Code Playgroud)

即使我在程序中设置了 2 个变量作为输出。有没有办法在ADFv2中映射存储过程的输出?到目前为止,我可以映射所有其他活动的输出,但不能映射存储过程的输出。

azure-data-factory azure-data-factory-2

5
推荐指数
1
解决办法
7470
查看次数

Azure 数据工厂检查复制记录的行数

我正在设计一个 ADF 管道,它将行从 SQL 表复制到 Azure Data Lake 中的文件夹。之后应该删除 SQL 中的行。但是对于此删除操作,我想知道复制的行数是否与我在管道开头选择的行数相同。有没有办法获取复制操作的行数并在另一个操作中使用它(如查找)

编辑后续问题:小波的回答是可以的。但是我有一个后续问题。在复制活动之后,我使用以下表达式放置了一个 If 条件:

@activity('LookUpActivity').output.firstRow.RecordsRead ==      @{activity('copyActivity').output.rowsCopied
Run Code Online (Sandbox Code Playgroud)

但后来我得到了错误:@activity('LookUpActivity').output.firstRow.RecordsRead == @{activity('copyActivity').output.rowsCopied

是否可以比较两个活动的输出参数以查看是否为 True?

额外编辑:我刚刚在这段代码中发现了一个错误。我忘记了代码开头的“{”。但是代码还是错误的。要比较早期活动的两个输出,代码必须是:

@equals(activity('LookUpActivity').output.firstRow.RecordsRead,activity('copyActivity').output.rowsCopied)
Run Code Online (Sandbox Code Playgroud)

azure-data-factory

5
推荐指数
1
解决办法
1万
查看次数

Azure 数据工厂,如何将 blob 数据增量复制到 sql

我有一个 azure blob 容器,其中每 6 小时放置一些带有数据的 json 文件,我想使用 Azure 数据工厂将其复制到 Azure SQL DB。文件的文件模式是这样的:“customer_year_month_day_hour_min_sec.json.data.json”

blob 容器也有其他 json 数据文件,因此我对数据集中的文件进行了过滤。

第一个问题是如何在 blob 数据集上设置文件路径以仅查找我想要的 json 文件?我尝试使用通配符 *.data.json 但这不起作用。我开始工作的唯一文件名通配符是 *.json

第二个问题是如何仅将数据从位于 blob 存储中的新文件(具有特定文件模式)复制到 Azure SQL?我无法控制将数据放入 blob 容器的过程,也无法将文件移动到另一个位置,这使得操作变得更加困难。

请帮忙。

azure-data-factory azure-data-factory-2

5
推荐指数
1
解决办法
1255
查看次数

如何从 Azure 数据工厂运行 PowerShell

我有一个PowerShell脚本,它为每 1000 条记录将一个复杂的 CSV 文件拆分为一个较小的 CSV 文件。这是代码:

$i=0;Get-Content C:\Users\dell\Desktop\Powershell\Input\bigsizeFile.csv -ReadCount 1000 | %{$i++; $_ | Out-File C:\Users\dell\Desktop\Powershell\Output\file$i.csv
}
Run Code Online (Sandbox Code Playgroud)

现在我想在 Azure PowerShell 中使用这个脚本,我想从 Azure 数据工厂运行它。有人可以帮忙解决这个问题。

powershell azure-powershell azure-data-factory azure-data-lake

5
推荐指数
1
解决办法
9107
查看次数

Azure 数据工厂 V2 - 调用返回多个结果集的存储过程

我想创建一个 ADF v2 管道来调用 Azure SQL 数据库中的存储过程。该存储过程具有输入参数,并将返回多个结果集(大约 3 个)。我们需要将其提取出来。我们正在尝试加载到 4 个不同文件的 Blob 存储或加载到表。

有没有办法在管道中执行?

在 SSIS 中,可以选择使用脚本组件和提取。https://www.timmitchell.net/post/2015/04/27/the-ssis-object-variable-and-multiple-result-sets/

在数据工厂中寻找建议。

azure-data-factory

5
推荐指数
1
解决办法
1355
查看次数

如何使用 Azure 数据工厂将 XML 元素读入变量

我正在尝试使用 Azure 数据工厂从 API 读取数据。首先,我需要调用一个登录方法,该方法提供 XML 响应。我需要从该 XML 中获取一个元素并将其放入下一个 API 调用中以获取我需要的数据。

目前,我正在使用复制数据工具调用登录方法并将 XML 保存到 blob 存储。现在如何将该 XML 的元素读取到变量中?

如果有更好的方法,请告知,但我仍然想知道如何将 XML 元素读入变量。

编辑:这是返回的 XML。我需要捕获 SessionID。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <DoLoginResponse xmlns="http://foo.bar">
            <DoLoginResult>
                <OperationStatus>true</OperationStatus>
                <StatusMessage />
                <SecurityProfile>
                    <User></User>
                    <Session>
                        <SessionId>d2cf6ea6-120f-4bff-a5d1-adad9063d9d2</SessionId>
                    </Session>
                    <IsFirstLogon>true</IsFirstLogon>
                    <IsSystemOwner>false</IsSystemOwner>
                </SecurityProfile>
            </DoLoginResult>
        </DoLoginResponse>
    </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

xml azure-data-factory

5
推荐指数
1
解决办法
5124
查看次数

Azure数据工厂中的polybase和批量插入、复制方法有什么区别以及何时使用它们?

有人可以详细说明何时在 azure datafactory 中使用 Polybase 与批量插入吗?这两种复制方法有什么区别?

sqlbulkcopy azure-data-factory

5
推荐指数
1
解决办法
1万
查看次数