Как указать таблицу базы данных как вывод в шаблоне ARM Job Stream Analytics - PullRequest
0 голосов
/ 25 сентября 2018

Я определяю задание 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?

1 Ответ

0 голосов
/ 02 октября 2018

Ваш объект свойств Input имеет «DataSource» и «Serialization», но отсутствует «type».Без этого невозможно узнать, является ли ввод вводом потока или вводом справочных данных.Как только вы добавите его, ваш объект входных свойств должен выглядеть следующим образом:

"Properties": {
                "type": "stream",
                "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"
                }
            }
...