Удалить вложенную папку даты getdate () <5 date - PullRequest
0 голосов
/ 19 октября 2019

Папки в DataLake имеют вложенную структуру папок с датами

2019 
    09
       29
       30
    10
       01
       02
       ..
       ..
       20

Я написал Datafactory, используя активные для каждого, GetMetaData, IfCondition и Delete

{
    "name": "IterateEachADLSItem",
    "type": "ForEach",
    "dependsOn": [
        {
            "activity": "F_SAP",
            "dependencyConditions": [
                "Succeeded"
            ]
        }
    ],
    "userProperties": [],
    "typeProperties": {
        "items": {
            "value": "@activity('F_SAP').output.value",
            "type": "Expression"
        },
        "isSequential": false,
        "activities": [
            {
                "name": "GetPurgeFolderMetadata",
                "description": "GetPurgeFolderMetadata",
                "type": "GetMetadata",
                "dependsOn": [],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "dataset": {
                        "referenceName": "DS_ADLS_FolderMetadata",
                        "type": "DatasetReference",
                        "parameters": {
                            "FolderPath": {
                                "value": "@concat(item().DestinationPath,item().SinkTableName,'/',item().LoadTypeName,'/',formatDateTime(adddays(utcnow(),-30),item().LoadIntervalFormat))",
                                "type": "Expression"
                            }
                        }
                    },
                    "fieldList": [
                        "exists"
                    ]
                }
            },
            {
                "name": "CheckPurgeFolderExists",
                "type": "IfCondition",
                "dependsOn": [
                    {
                        "activity": "GetPurgeFolderMetadata",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "userProperties": [],
                "typeProperties": {
                    "expression": {
                        "value": "@activity('GetPurgeFolderMetadata').output.Exists",
                        "type": "Expression"
                    },
                    "ifTrueActivities": [
                        {
                            "name": "DeletePurgeFiles",
                            "type": "Delete",
                            "dependsOn": [],
                            "policy": {
                                "timeout": "7.00:00:00",
                                "retry": 0,
                                "retryIntervalInSeconds": 30,
                                "secureOutput": false,
                                "secureInput": false
                            },
                            "userProperties": [],
                            "typeProperties": {
                                "dataset": {
                                    "referenceName": "DS_ADLS_CopyDataSinkFile",
                                    "type": "DatasetReference",
                                    "parameters": {
                                        "SinkFilePath": {
                                            "value": "@concat(item().DestinationPath,item().SinkTableName,'/',item().LoadTypeName,'/',formatDateTime(adddays(utcnow(),-5),item().LoadIntervalFormat))",
                                            "type": "Expression"
                                        }
                                    }
                                },
                                "enableLogging": false,
                                "recursive": true
                            }
                        }
                    ]
                }
            }
        ]
    }
}

Я могу удалить за 5 дней до даты в гггг / мм / дд. если я выполню в 2019/10/19, я могу удалить 2019/10/14

Удалить в порядке на основе синтаксиса ниже для точных 5 дат до

''"value": "@concat(item().DestinationPath,item().SinkTableName,'/',item().LoadTypeName,'/',formatDateTime(adddays(utcnow(),-5),item().LoadIntervalFormat))",

Я невозможность зацикливания и поиска более ранних дней в папке для каждого месяца или более раннего года при условии, что существует папка.

т.е.: как удалить за предыдущий месяц и предыдущие годы, например, когда мы находимся, например,: 03/01/2020.

1 Ответ

1 голос
/ 20 октября 2019

Я думаю, что вы могли бы достичь своей цели, используя следующий подход:

  1. Иметь действие Get Metadata, чтобы вывести список всех папок в корневой папке и включить действие foreach в GetMetadata. Это должно создать список лет.
  2. Включить действие условия для сравнения текущего года с именем папки и включить операцию удаления, если это число меньше текущего года.
  3. Если указанное выше условие не соответствует, включить другое условие дляпроверьте, равно ли оно, и если да, включите другое действие Get Metadata,
  4. Вышеуказанное действие Get Metadata выведет список папок, которые должны составить список месяцев и включать foreach. Используйте аналогичную логику для месяцев и включите другую активность метаданных в список дней для текущего месяца.
  5. Наконец, последнее действие Get Metadata будет содержать список дней, и если номер дня будет меньше текущего дня, будет включать в себя действие Delete

Надеюсь, что это помогает, Fikrat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...