Я пытаюсь прочитать последний файл больших двоичных объектов (csv), используя фабрику данных azure v2. Имя файла также содержит дату (ГГГГ-ММ-ДД мм:сс-abcd.csv). Мне нужно прочитать данные из последнего файла и загрузить в хранилище таблиц. Не могли бы вы помочь мне с тем, как прочитать последний файл с помощью ADF
Привет Фаиз Рахман и спасибо за ваш вопрос. Выбранный формат даты имеет полезную функцию лексикографической сортировки, соответствующей хронологической сортировке. Это означает, что когда у вас есть список BLOB-объектов, достаточно извлечь дату и сравнить его.
Если у вас очень большой список больших двоичных объектов, это может оказаться нецелесообразным. В этом случае всякий раз, когда вы пишете новый большой двоичный объект, отслеживайте его где-нибудь, скажем, «maxBlobName.txt», и пусть конвейер читает его, чтобы получить имя самого последнего файла.
Ниже приведен пример кода для сравнения дат в именах больших двоичных объектов. Чтобы адаптироваться к вашим целям, вам потребуется использовать действие GetMetadata для получения имен больших двоичных объектов и некоторые строковые функции для извлечения только части даты имени для сравнения.
{
"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"
}
}
}
}
Я думаю, вы могли создать хранилище больших двоичных объектов для хранения входных файлов. Чтобы выполнить последний файл, самым простым решением было бы создать другую папку, скажем,
Success
, и переместить файл, который был выполнен, в папкуSuccess
. Таким образом, папкаinput
всегда будет пустой, как только файл будет выполнен, и любой новый файл будет загружен в папкуinput
, которая будет автоматически выбрана для обработки.