如何使用azure data factory v2(adf)在文件夹中查找最新文件
我正在尝试使用azure data factory v2读取最新的blob文件(csv)。文件名还包含日期(YYYY-MM-DD MM:ss abcd.csv)。我需要从当前的最新文件中读取数据并加载到表存储器中。请您帮助我如何使用ADF阅读最新文件,谢谢您的提问。您选择的日期格式具有字典排序与时间排序相匹配的有用功能。这意味着,一旦您有了一个blob列表,就只需要提取日期并进行比较了 如果您有一个非常大的blob列表,那么这可能不实用。在这种情况下,无论何时编写新blob,都要在某个地方跟踪它,比如说“maxBlobName.txt”,并让管道读取它以获取最近的文件名 下面是一些用于比较blob名称的日期部分的示例代码。为了适应您的需要,您需要使用GetMetadata活动获取blob名称,并使用一些字符串函数仅提取名称的日期部分进行比较如何使用azure data factory v2(adf)在文件夹中查找最新文件,azure,azure-data-factory,azure-data-factory-2,Azure,Azure Data Factory,Azure Data Factory 2,我正在尝试使用azure data factory v2读取最新的blob文件(csv)。文件名还包含日期(YYYY-MM-DD MM:ss abcd.csv)。我需要从当前的最新文件中读取数据并加载到表存储器中。请您帮助我如何使用ADF阅读最新文件,谢谢您的提问。您选择的日期格式具有字典排序与时间排序相匹配的有用功能。这意味着,一旦您有了一个blob列表,就只需要提取日期并进行比较了 如果您有一个非常大的blob列表,那么这可能不实用。在这种情况下,无论何时编写新blob,都要在某个地方跟踪它
{
"name": "pipeline9",
"properties": {
"activities": [
{
"name": "ForEach1",
"type": "ForEach",
"dependsOn": [
{
"activity": "init array",
"dependencyConditions": [
"Succeeded"
]
}
],
"typeProperties": {
"items": {
"value": "@variables('list')",
"type": "Expression"
},
"isSequential": true,
"activities": [
{
"name": "If Condition1",
"type": "IfCondition",
"typeProperties": {
"expression": {
"value": "@greater(item(),variables('max'))",
"type": "Expression"
},
"ifTrueActivities": [
{
"name": "write new max",
"type": "SetVariable",
"typeProperties": {
"variableName": "max",
"value": {
"value": "@item()",
"type": "Expression"
}
}
}
]
}
}
]
}
},
{
"name": "init array",
"type": "SetVariable",
"typeProperties": {
"variableName": "list",
"value": {
"value": "@split(pipeline().parameters.input,',')",
"type": "Expression"
}
}
}
],
"parameters": {
"input": {
"type": "string",
"defaultValue": "'2019-07-25','2018-06-13','2019'-06-24','2019-08-08','2019-06-23'"
}
},
"variables": {
"max": {
"type": "String",
"defaultValue": "0001-01-01"
},
"list": {
"type": "Array"
}
}
}
}你好,法兹·拉赫曼,谢谢你的提问。您选择的日期格式具有字典排序与时间排序相匹配的有用功能。这意味着,一旦您有了一个blob列表,就只需要提取日期并进行比较了 如果您有一个非常大的blob列表,那么这可能不实用。在这种情况下,无论何时编写新blob,都要在某个地方跟踪它,比如说“maxBlobName.txt”,并让管道读取它以获取最近的文件名 下面是一些用于比较blob名称的日期部分的示例代码。为了适应您的需要,您需要使用GetMetadata活动获取blob名称,并使用一些字符串函数仅提取名称的日期部分进行比较
{
"name": "pipeline9",
"properties": {
"activities": [
{
"name": "ForEach1",
"type": "ForEach",
"dependsOn": [
{
"activity": "init array",
"dependencyConditions": [
"Succeeded"
]
}
],
"typeProperties": {
"items": {
"value": "@variables('list')",
"type": "Expression"
},
"isSequential": true,
"activities": [
{
"name": "If Condition1",
"type": "IfCondition",
"typeProperties": {
"expression": {
"value": "@greater(item(),variables('max'))",
"type": "Expression"
},
"ifTrueActivities": [
{
"name": "write new max",
"type": "SetVariable",
"typeProperties": {
"variableName": "max",
"value": {
"value": "@item()",
"type": "Expression"
}
}
}
]
}
}
]
}
},
{
"name": "init array",
"type": "SetVariable",
"typeProperties": {
"variableName": "list",
"value": {
"value": "@split(pipeline().parameters.input,',')",
"type": "Expression"
}
}
}
],
"parameters": {
"input": {
"type": "string",
"defaultValue": "'2019-07-25','2018-06-13','2019'-06-24','2019-08-08','2019-06-23'"
}
},
"variables": {
"max": {
"type": "String",
"defaultValue": "0001-01-01"
},
"list": {
"type": "Array"
}
}
}
}我想,您可能已经创建了用于保存输入文件的blob存储。要获取要执行的最新文件,最简单的解决方案是创建另一个文件夹,比如说
Success
,并将执行的文件移动到Success
文件夹。因此,一旦文件被执行,并且任何新文件被上传到input
文件夹中,该文件夹将始终为空,该文件夹将自动拾取以进行处理。我猜,您可能已经创建了用于保存输入文件的blob存储。要获取要执行的最新文件,最简单的解决方案是创建另一个文件夹,比如说Success
,并将执行的文件移动到Success
文件夹。因此,一旦文件被执行,并且任何新文件被上传到input
文件夹(该文件夹将自动拾取以进行处理),那么input
文件夹将始终为空。