Вот мой сценарий, Ежедневно в хранилище BLOB-объектов будет помещаться CSV-файл, который будет обрабатываться моим потоком данных в ADF и генерировать CSV-файл в выходной папке.
Теперь, используя приложения логики, мне нужно отправить этот CSV-файл (менее 10 МБ) в качестве вложения клиенту через соединитель Outlook. Кроме того, мое тело электронного письма должно иметь динамическое значение, исходящее из этого blob csv. Например, «AppWorks» — это значение столбца в столбце «Работает/нет». Иногда это может быть «AppNotWorks». Итак, как справиться с этим сценарием в приложениях логики Azure.
Например, у меня есть файл csv в blob. Мне нужно прикрепить этот файл как почтовое вложение через Outlook, а также в теле письма, мне нужно получить доступ к значению столбца «CustomerName», которое меняется ежедневно, но его только одно подобное значение.
Пример: Текст моего письма: Привет [ИмяЗаказчика] Случайное описание.
Таким образом, весь столбец имеет одинаковое значение, которое меняется ежедневно. Поправьте меня если я ошибаюсь
Для этого можно использовать комбинацию фабрики данных и приложений логики. Используйте действие look up
, чтобы получить первую строку файла (поскольку значение всего столбца будет одинаковым, мы можем получить требуемое значение из одной строки).
@activity('Lookup1').output.firstRow
{
"properties": {
"customer": {
"type": "string"
},
"id": {
"type": "string"
}
},
"type": "object"
}
{
"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"
}
}
}
}
}
Итак, вы хотите отправлять почту для каждой отдельной строки, где body будет значением столбца
Works/not
. Поправьте меня если я ошибаюсь.