标签: azure-data-factory

使用 Azure 数据工厂解析列中的 JSON 字符串

这是我的情况

我有 Azure 表作为源,我的目标是 Azure SQL 数据库。源表看起来像这样:

ID 文件名 元数据
1 文件_1.txt {“公司”:{“id”:555,“名称”:“A公司”},“质量”:[{“质量”:3,“文件名”:“file_1.txt”},{“质量”: 4、“file_name”:“未知”}]}
2 文件_2.txt {"公司": { "id": 231, "姓名": "公司B" }, "质量": [{"质量": 4, "文件名": "file_2.txt"}, {"质量": 3、“file_name”:“未知”}]}
3 文件_3.txt {“公司”:{“id”:111,“名称”:“C公司”},“质量”:[{“质量”:5,“文件名”:“未知”},{“质量”:4, "file_name": "file_3.txt"}]}

目标表应该如下所示:

ID 文件名 公司 质量
1 文件_1.txt A公司 3
2 文件_2.txt B公司 4
3 文件_3.txt C公司 4

这意味着我需要解析该字符串中的数据以获取新的列值,并根据源中的 file_name 列使用质量值。

我做的第一件事是创建一个复制管道,将数据从 Azure 表 1 对 1 传输到 Azure Data Lake Store 上的 parquet 文件,以便我可以将其用作数据流中的源。接下来,想法是使用派生列并使用一些表达式来获取数据,但据我所知,没有表达式将此字符串视为 JSON 对象。

因此,下一个想法可能是在此过程之前添加一个步骤,我将元数据列的内容提取到 ADLS 上的单独文件中,并使用该文件作为源或查找,并将其定义为 JSON 文件。这意味着我需要将 id 值添加到 JSON 文件,以便我能够将数据绑定回记录。 …

json azure azure-data-factory

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

Azure 数据工厂数据流中的“数据集”和“内联”源之间的区别?

Azure 数据工厂数据流源中的两种源类型“数据集”和“内联”之间有什么区别?在什么情况下我应该使用其中一种而不是另一种?

我已经阅读了微软的官方文档,但我无法弄清楚:

当一种格式同时支持内联和数据集对象时,两者都有好处。数据集对象是可重用的实体,可用于其他数据流和活动(例如复制)。当您使用强化模式时,这些可重用实体特别有用。数据集不基于 Spark。有时,您可能需要覆盖源转换中的某些设置或架构投影。

当您使用灵活的模式、一次性源实例或参数化源时,建议使用内联数据集。如果您的源高度参数化,则内联数据集允许您不创建“虚拟”对象。内联数据集基于 Spark,其属性是数据流固有的。

azure bigdata azure-data-factory azure-pipelines

4
推荐指数
1
解决办法
9392
查看次数

Azure 数据工厂与 Azure 逻辑应用

尝试自学一些 ETL 技能,并需要一些帮助来了解完成某些任务的最佳方法。我正在尝试将我们的客户服务平台 Freshdesk 中的数据引入我们的 SQL 数据仓库。我们是一家微软公司,我使用 Microsoft Azure 数据工厂和 Microsoft 逻辑应用程序完成了一些类似的任务。逻辑应用程序代码量低/无代码,而且更直观,所以我现在尝试使用它。然而,我觉得数据工厂可能是最有效的方法(尽管目前还不能 100% 确定如何做到这一点)。任何帮助或正确方向的指出都值得赞赏。

data-warehouse azure azure-logic-apps azure-data-factory

4
推荐指数
1
解决办法
8044
查看次数

Azure 数据工厂 - 使用 Rest API 的复制任务在执行时仅返回第一行

我在 ADF 中有一个复制任务,该任务将数据从 REST API 提取到 Azure SQL 数据库中。我已经创建了映射,并拉入了集合引用,如下所示:

json数据预览

来源

下沉

映射

输出

您会注意到运行复制任务时它仅输出 1 行(第一行)。我知道这通常是因为您正在从嵌套的 JSON 数组中提取数据,其中集合引用应该解决此问题以从数组中提取数据 - 但我一生都无法让它提取多条记录,即使在设置集合之后也是如此。

json azure azure-data-factory

4
推荐指数
1
解决办法
5694
查看次数

从查询中填充Azure数据工厂数据集

无法通过谷歌,msdn(和其他微软)文档或SO找到答案.

在Azure Data Factory中,您可以使用管道中的复制活动从数据集中获取数据.管道定义包括查询.我在文档中看到的所有查询都是简单的单表查询,没有连接.在这种情况下,数据集被定义为数据库中具有"TableName"="mytable"的表.另外,可以从存储过程中检索数据,可能允许更复杂的sql.

有没有办法在管道中定义更复杂的查询,该管道包括连接和/或转换逻辑,这些逻辑改变来自查询而不是存储过程的数据或管道.我知道您可以在数据集中指定字段,但不知道如何绕过"tablename"属性.

如果有办法,该方法会是什么?

输入是本地sql server.输出是azure sql数据库.

为清晰起见更新.

azure azure-data-factory azure-sql-database cortana-intelligence

3
推荐指数
1
解决办法
3060
查看次数

错误VertexFailedFast.顶点故障触发了快速作业中止

我正在运行Data Lake - Analytics工作,我收到以下错误

错误VertexFailedFast.顶点故障触发了快速作业中止.顶点失败:SV1_Extract [0] [0],错误:顶点用户代码错误.说明Vertex因失败快速错误而失败

有人知道为什么会这样吗?

azure-data-factory azure-data-lake

3
推荐指数
1
解决办法
3156
查看次数

以编程方式将文件从 Azure Blob 存储传输到 Google Cloud Storage

我有许多文件通过 Azure 数据工厂传输到 Azure Blob 存储。不幸的是,这个工具似乎没有为任何值设置 Content-MD5 值,所以当我从 Blob 存储 API 中提取该值时,它是空的。

我的目标是将这些文件从 Azure Blob 存储传输到 Google 存储。我在https://cloud.google.com/storage/transfer/reference/rest/v1/TransferSpec#HttpData 上看到的有关 Google Storagetransfer 服务的文档表明,如果我提供以下内容的列表,我可以轻松启动此类传输文件及其 URL、长度(以字节为单位)和每个文件的 MD5 哈希值。

好吧,我可以轻松地从 Azure 存储中提取前两个,但第三个似乎不会自动由 Azure 存储填充,我也找不到任何方法让它这样做。

不幸的是,我的其他选择看起来很有限。到目前为止的可能性:

  1. 将文件下载到本地机器,确定哈希值并更新 Blob MD5 值
  2. 看看我是不是不能在同一个区域中编写一个 Azure Functions 应用程序来计算哈希值并将其写入容器中每个的 blob
  3. 根据https://cloud.google.com/storage/transfer/reference/rest/v1/TransferSpec#AwsS3Data使用来自数据工厂的 Amazon S3 出口,然后使用 Google 对从 S3 导入的支持从那里提取它,但这确实似乎浪费带宽(我必须设置一个亚马逊帐户)。

理想情况下,我希望能够编写一个脚本,然后点击开始并不管它。我没有从 Azure 获得最快的下载速度,所以 #1 会不太理想,因为它需要很长时间。

还有其他方法吗?

azure-storage-blobs google-cloud-storage azure-data-factory

3
推荐指数
2
解决办法
8520
查看次数

在Azure数据工厂中的管道中运行U-SQL活动时出错

我在ADF的管道中运行USQL活动时遇到以下错误:

活动错误:

{"errorId":"E_CSC_USER_SYNTAXERROR","severity":"Error","component":"CSC",
    "source":"USER","message":"syntax error.
     Final statement did not end with a semicolon","details":"at token 'txt', line 3\r\nnear the ###:\r\n**************\r\nDECLARE @in string = \"/demo/SearchLog.txt\";\nDECLARE @out string = \"/scripts/Result.txt\";\nSearchLogProcessing.txt ### \n",
    "description":"Invalid syntax found in the script.",
    "resolution":"Correct the script syntax, using expected token(s) as a guide.","helpLink":"","filePath":"","lineNumber":3,
    "startOffset":109,"endOffset":112}].
Run Code Online (Sandbox Code Playgroud)

这是输出数据集,管道和USQL脚本的代码,我试图在管道中执行.

OutputDataset:

{
"name": "OutputDataLakeTable",
"properties": {
    "published": false,
    "type": "AzureDataLakeStore",
    "linkedServiceName": "LinkedServiceDestination",
    "typeProperties": {
        "folderPath": "scripts/"
    },
    "availability": {
        "frequency": "Hour",
        "interval": 1
    }
}
Run Code Online (Sandbox Code Playgroud)

管道:

{
    "name": "ComputeEventsByRegionPipeline",
    "properties": {
        "description": "This …
Run Code Online (Sandbox Code Playgroud)

azure azure-data-factory u-sql

3
推荐指数
1
解决办法
1384
查看次数

如何从 Azure 批处理和数据工厂使用 Azure 分析服务进行身份验证

我有一个使用 AMO 库连接到 Azure 分析服务的 ac 类库。

我想使用它作为我的数据工厂管道的一部分来刷新多维数据集分区。这是通过 Azure 批处理作为自定义 .net 活动完成的。

var server = new Server();
server.Connect("Provider=MSOLAP;Data Source=asazure://uksouth.asazure.windows.net/abcd;Initial Catalog=xyz");
Run Code Online (Sandbox Code Playgroud)

在本地运行这个工作正常,但是这不会在云中运行。它目前出错,因为它不在我的用户帐户下运行。我知道我可以在连接字符串中添加用户名和密码,但如果可能的话,我更愿意给它某种形式的授权。

是否还有其他方法可以使用 Azure 分析服务进行身份验证?

c# azure-data-factory azure-batch azure-analysis-services

3
推荐指数
1
解决办法
2492
查看次数

Azure 数据工厂:Start Integration Runtime 需要花费我吗?

我有几个要部署和定期运行的 SSIS 包。我正在关注这个 MS 教程

接近尾声的地方有一个命令来启动集成运行时。我有点推迟,因为它说需要 20-30 分钟才能完成。所以我的主要问题是:如果我完成启动集成运行时命令但不执行任何 SSIS 包,我会被计费吗?

我在数据工厂定价中读到

不活动的管道每月收费 0.40 美元

但我还没有这方面的经验,我想确定我没有浪费我的开发津贴。

如果它真的(几乎)免费,除非我开始执行包,一旦我开始运行时,那么我应该让它继续运行吗?

另外,我在网上搜索了几次,但没有找到任何关于如何通过门户创建集成运行时的教程。真的是这样吗?

最后,我试图将这些 SSIS 包部署到与源或目标 SQL Server 无关的 SQL Server - 两台服务器都归其他人所有。可以吗?

ssis azure-data-factory

3
推荐指数
1
解决办法
1978
查看次数