Как получить значение столбца из CSV-файла ADLS gen 2 и использовать значение столбца в теле письма, а также отправить данные BLOB-объектов в виде вложения в почту Outlook

Вот мой сценарий, Ежедневно в хранилище BLOB-объектов будет помещаться CSV-файл, который будет обрабатываться моим потоком данных в ADF и генерировать CSV-файл в выходной папке.

Теперь, используя приложения логики, мне нужно отправить этот CSV-файл (менее 10 МБ) в качестве вложения клиенту через соединитель Outlook. Кроме того, мое тело электронного письма должно иметь динамическое значение, исходящее из этого blob csv. Например, «AppWorks» — это значение столбца в столбце «Работает/нет». Иногда это может быть «AppNotWorks». Итак, как справиться с этим сценарием в приложениях логики Azure.

Итак, вы хотите отправлять почту для каждой отдельной строки, где body будет значением столбца Works/not. Поправьте меня если я ошибаюсь.

Saideep Arikontham 16.02.2023 11:52

Например, у меня есть файл csv в blob. Мне нужно прикрепить этот файл как почтовое вложение через Outlook, а также в теле письма, мне нужно получить доступ к значению столбца «CustomerName», которое меняется ежедневно, но его только одно подобное значение.

Surya Teja532 16.02.2023 13:37

Пример: Текст моего письма: Привет [ИмяЗаказчика] Случайное описание.

Surya Teja532 16.02.2023 13:38

Таким образом, весь столбец имеет одинаковое значение, которое меняется ежедневно. Поправьте меня если я ошибаюсь

Saideep Arikontham 16.02.2023 13:40
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
4
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для этого можно использовать комбинацию фабрики данных и приложений логики. Используйте действие look up, чтобы получить первую строку файла (поскольку значение всего столбца будет одинаковым, мы можем получить требуемое значение из одной строки).

  • Теперь используйте веб-активность для запуска приложения логики. Передайте URL-адрес HTTP-запроса приложения логики веб-действию. В теле передайте следующий динамический контент:
@activity('Lookup1').output.firstRow

  • При отладке конвейера приложение логики будет успешно запущено. Я дал схему JSON тела запроса, чтобы получить значения по отдельности. Для образца, который я взял, это будет выглядеть так, как показано ниже:
{
    "properties": {
        "customer": {
            "type": "string"
        },
        "id": {
            "type": "string"
        }
    },
    "type": "object"
}
  • Создайте подключение к учетной записи хранения, чтобы связать нужный файл.

  • Теперь, используя коннектор Outlook, отправьте электронное письмо.

  • Ниже приведено все приложение логики в формате JSON.
{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Get_blob_content_(V2)": {
                "inputs": {
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azureblob']['connectionId']"
                        }
                    },
                    "method": "get",
                    "path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('AccountNameFromSettings'))}/files/@{encodeURIComponent(encodeURIComponent('JTJmZGF0YSUyZnNhbXBsZTEuY3N2'))}/content",
                    "queries": {
                        "inferContentType": true
                    }
                },
                "metadata": {
                    "JTJmZGF0YSUyZnNhbXBsZTEuY3N2": "/data/sample1.csv"
                },
                "runAfter": {},
                "type": "ApiConnection"
            },
            "Send_an_email_(V2)": {
                "inputs": {
                    "body": {
                        "Attachments": [
                            {
                                "ContentBytes": "@{base64(body('Get_blob_content_(V2)'))}",
                                "Name": "sample1.csv"
                            }
                        ],
                        "Body": "<p>Hi @{triggerBody()?['customer']},<br>\n<br>\nRandom description</p>",
                        "Importance": "Normal",
                        "Subject": "sample data",
                        "To": "<to_email>"
                    },
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['office365']['connectionId']"
                        }
                    },
                    "method": "post",
                    "path": "/v2/Mail"
                },
                "runAfter": {
                    "Get_blob_content_(V2)": [
                        "Succeeded"
                    ]
                },
                "type": "ApiConnection"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {
            "$connections": {
                "defaultValue": {},
                "type": "Object"
            }
        },
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {
                        "properties": {
                            "customer": {
                                "type": "string"
                            },
                            "id": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    }
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    },
    "parameters": {
        "$connections": {
            "value": {
                "azureblob": {
                    "connectionId": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Web/connections/azureblob",
                    "connectionName": "azureblob",
                    "id": "/subscriptions/xxx/providers/Microsoft.Web/locations/westus2/managedApis/azureblob"
                },
                "office365": {
                    "connectionId": "/subscriptions/xxx/resourceGroups/v-sarikontha-Mindtree/providers/Microsoft.Web/connections/office365",
                    "connectionName": "office365",
                    "id": "/subscriptions/xxx/providers/Microsoft.Web/locations/westus2/managedApis/office365"
                }
            }
        }
    }
}
  • Ниже приведено результирующее изображение Mail для справки:

Другие вопросы по теме

Сбой действия Azure ForEach: функция length ожидает, что ее параметр будет массивом или строкой. Предоставленное значение имеет тип «Целое число»
Поток данных ADF json Flatten Развернуть
Столбец JSON SQL в фабрике данных Azure
Фабрика данных Azure Получить действие метаданных, возвращающее ошибку "(404) не найдено" при получении количества столбцов
RunOutput не появляется даже после использования dbutils.notebook.exit в ADF
Сопоставление определенного значения со столбцом в параметризованном действии копирования в Фабрике данных Azure
Я хочу скопировать файлы из файловой системы в другую файловую систему на основе страны. Пробовал с GetMetadata, но поглощал только один файл в целевом объекте
Сбой фабрики данных Azure с UPSERT для каждой таблицы со столбцом TIMESTAMP
Запретить обновление поля в фабрике данных
Эквивалент СЧЁТЕСЛИ() и эквивалент сброса «типа состояния» в SSMS или ADF