如何通过 PowerShell 或 ARM 模板在 Azure 数据资源管理器中创建 Table 和摄取映射

How to create Table and Ingestion Mapping in Azure Data Explorer via PowerShell or ARM Template

我们希望自动创建和设置 Azure 数据资源管理器集群。

通过 ARM 模板配置集群和创建数据库没有问题。

创建数据连接以通过事件中心摄取数据流也可以通过 New-AzKustoDataConnection PowerShell 命令进行。

但是,此命令需要 table 和数据库中存在的摄取映射。

最近能够运行出custom script containing KQL commands in the context of the database was added to the Kusto management PowerShell API以及其他语言的SDK(比如C#)。您可以使用它来创建表和表的映射。

您可以 运行 Kusto 查询语言脚本在 ARM 模板部署期间配置您的数据库。 Kusto 查询语言脚本是一个或多个控制命令的列表,每个控制命令仅由一个换行符分隔,并创建为将使用 ARM 模板访问的资源。该脚本只能运行控制以下列动词开头的命令:

  • .create
  • .create-or-alter
  • .create-merge
  • .alter
  • .alter-merge

整体流程如下:

  1. 创建包含控制命令的脚本。例如,下面的代码是创建两个表 MyTableMyTable2:
  2. 的 Kusto 查询语言脚本
.create table MyTable (Level:string, Timestamp:datetime, UserId:string, TraceId:string, Message:string, ProcessId:int32)
.create table MyTable2 (Level:string, Timestamp:datetime, UserId:string, TraceId:string, Message:string, ProcessId:int32)
  1. 将您的 Kusto 查询语言脚本上传到 Azure 存储帐户。

  2. 使用共享访问签名 (SaS) 提供对此文件的访问。您可以使用 PowerShell、CLI 或 .NET 执行此操作。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": { ... },
    "variables": { },
    "resources": [
        {
            "type": "Microsoft.Kusto/Clusters/Databases/Scripts",
            "apiVersion": "2021-01-01",
            "name": "[concat(concat(parameters('clusterName'), '/'), concat(parameters('databaseName'), '/'), parameters('scriptName'))]",
            "properties": {
                "scriptUrl": "[parameters('scriptUrl')]",
                "scriptUrlSasToken": "[parameters('scriptUrlSasToken')]",
                "continueOnErrors": "[parameters('continueOnErrors')]",
                "forceUpdateTag": "[parameters('forceUpdateTag')]"
            }
        }
    ]
}

可以在 the documentation 中找到更多信息。