Я определяю задание Stream Analytics с помощью шаблона диспетчера ресурсов Azure (ARM).
Мне нужно сохранить некоторые сообщения из входа концентратора событий в выходные данные базы данных SQL Server.
при выполнении этой команды:
az group deployment create \
--name "deployStreamAnalyticsJobs" \
--resource-group "CiTestRG" \
--template-file ./templates/stream-analytics-jobs-definition.json
, тогда я вижу этот вывод:
Deployment failed. Correlation ID: <ONE_GUID>. {
"code": "422",
"message": "The required property 'type' is missing from the request.",
"details": {
"code": "422",
"message": "The required property 'type' is missing from the request.",
"correlationId": "<ANOTHER_GUID>",
"requestId": "<YET_ANOTHER_GUID>"
}
}
, но согласно этой документации: https://docs.microsoft.com/en-us/azure/templates/microsoft.streamanalytics/streamingjobs#MicrosoftSqlServerDatabaseOutput
Я должен только предоставитьдетали вывода базы данных в виде:
"datasource": {
"type": "Microsoft.Sql/Server/Database",
"properties": {
"server": "string",
"database": "string",
"user": "string",
"password": "string",
"table": "string"
}
}
Я думаю, что сообщение об ошибке команды az
пытается сказать, что эти свойства не определены как string
, но тогда почему документы неуказать тип, но просто передать эти свойства в виде строковых значений?
Это определение JSON шаблона ARM:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "westeurope"
},
"hubName": {
"type": "string",
"defaultValue": "myIoTHub"
},
"eventhubs_messages_name": {
"defaultValue": "myEhName",
"type": "String"
},
"namespaces_oecollector_name": {
"defaultValue": "myEventHub",
"type": "String"
},
"streamAnalyticsJobName": {
"type": "string",
"defaultValue": "myStreamAnalyticsJob"
}
},
"resources": [{
"type": "Microsoft.StreamAnalytics/StreamingJobs",
"apiVersion": "2016-03-01",
"name": "[parameters('streamAnalyticsJobName')]",
"location": "[resourceGroup().location]",
"properties": {
"sku": {
"name": "standard"
},
"outputErrorPolicy": "Drop",
"eventsOutOfOrderPolicy": "adjust",
"eventsOutOfOrderMaxDelayInSeconds": 0,
"eventsLateArrivalMaxDelayInSeconds": 86400,
"inputs": [{
"Name": "EventHubOutputLable",
"Properties": {
"DataSource": {
"Type": "Microsoft.ServiceBus/EventHub",
"Properties": {
"eventHubName": "[parameters('eventhubs_messages_name')]",
"serviceBusNamespace": "[parameters('namespaces_oecollector_name')]",
"sharedAccessPolicyKey": "[listKeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', parameters('namespaces_oecollector_name'), parameters('eventhubs_messages_name'), 'super-user'),'2017-04-01').primaryKey]",
"sharedAccessPolicyName": "RootManageSharedAccessKey"
}
},
"Serialization": {
"Properties": {
"Encoding": "UTF8"
},
"Type": "Json"
}
}
}],
"outputs": [{
"Name": "myOutputDb",
"Properties": {
"DataSource": {
"Type": "Microsoft.Sql/Server/Database",
"Properties": {
"Server": "my-sql-server-name",
"Database": "my-database-name",
"User": "my-sa-user",
"Password": "my-password",
"Table": "MySchema.MyTable"
}
}
}
}],
"transformation": {
"name": "Transformation",
"properties": {
"streamingUnits": 1,
"query": "WITH data AS (\r\n SELECT\r\n <THE_FIELDS_OF_THE_JSON_INPUT_AS_COLUMNS>\r\n FROM\r\n input\r\n WHERE\r\n topic = 'FOO'\r\n )\r\n \r\n SELECT * INTO myOutputDb FROM data"
}
}
}
}]
}
Как сделать так, чтобы работа Stream Analytics выбирала сообщения из вводаКонцентратор событий и сохранение их в выходной базе данных SQL Server?