簡體   English   中英

Azure Stream 分析作業 - 轉換查詢 - ARM 模板中的正確格式

[英]Azure Stream Analytics Job - Transformation Query - correct formatting in ARM template

在門戶中編輯 Stream Analytics 轉換查詢時,您可以對其進行格式化以便跨多行閱讀...例如

SELECT 
INTO [Output1]
FROM [Input1]
PARTITION BY PartitionId
WHERE etc etc etc

當將其放入 CI/CD 的 ARM 模板時,它作為一個巨大的長字符串輸入,最終將在門戶中顯示為...

SELECT * INTO [Output1] FROM [Input1] PARTITION BY PartitionId WHERE etc etc etc to infinity....

官方文檔非常無用,沒有為模板的查詢部分提供任何線索,只是它是一個“字符串”......

https://learn.microsoft.com/en-us/azure/templates/microsoft.streamanalytics/2016-03-01/streamingjobs/transformations

有一個 Microsoft 示例模板,這是我可以找到的唯一一個指定轉換查詢的示例... https://github.com/Azure/azure-quickstart-templates/blob/master/101-streamanalytics-create/azuredeploy。 json ...看起來它正在嘗試間距...

"query": "SELECT\r\n    *\r\nINTO\r\n    [YourOutputAlias]\r\nFROM\r\n    [YourInputAlias]"

...但失敗得很嚴重 - 請參閱屏幕截圖

有沒有人設法做到這一點?

還有人知道為什么您可以在 Azure 資源瀏覽器 ( https://resources.azure.com/ ) 中看到轉換查詢嗎? 還是無法使用 Stream 作業的 rest 從門戶導出? (在資源組級別完成)

提前致謝

在此處輸入圖像描述

我知道這是一整年之后,也許你已經想通了,但是,這就是我所做的:

在我的參數文件中,我使用了一個字符串數組,例如:

"StreamAnalyticsJobQueryMultiline": {
    "value": [
    "WITH allData AS ( ",
    "    SELECT ",
    "        *, ",
    "        GetMetadataPropertyValue([%%INPUTSTREAMNAME%%], '[User].[EventNamespace]') AS EventNamespace ",
    "    FROM [%%INPUTSTREAMNAME%%] Partition By PartitionId ",
    "SELECT ",
    "    *, ",
    "    'EventHubWriterv1' AS EventType ",
    "INTO ",
    "    [%%OUTPUTSTREAMNAME%%] ",
    "FROM ",
    "    allData Partition By PartitionId "
    ]

當數組連接起來時,output 作為一個字符串,它會產生這樣的東西,其中該數組中的每個項目仍然用引號括起來,整個東西都包含在方括號中(參見: https://learn.microsoft .com/en-us/azure/azure-resource-manager/templates/template-functions-string#concat

[“富”,“酒吧”,“等等”]

因此,需要進行額外的轉換以將其轉換為 Stream 分析 output 中可讀的內容。
還要注意這里的 %%INPUTSTREAMNAME%% 和 %%OUTPUTSTREAMNAME%%,因為我的輸入流和 output 流也是參數,並且使用典型的內聯 [parameter('ParamName')] 不能很好地處理轉換的 rest需要。

在我的模板文件中,我使用StreamAnalyticsJobQueryMultiline參數並使用變量字段來執行此轉換:

"QueryStringRaw":  "[string(concat(parameters('StreamAnalyticsJobQueryMultiline')))]",
    
// Update the end-of-lines by removing the doublequote and comma, and replacing it with a newline character 
"QueryStringIter1": "[replace(variables('QueryStringRaw'), '\",', '\n')]",

// Update the beginning-of-lines by removing the doublequote
"QueryStringIter2": "[replace(variables('QueryStringIter1'), '\"', '')]",

// Update the InputStreamName and OutputStreamName values
"QueryStringIter3": "[replace(variables('QueryStringIter2'), '%%INPUTSTREAMNAME%%', parameters('InputStreamName'))]",
"QueryStringIter4": "[replace(variables('QueryStringIter3'), '%%OUTPUTSTREAMNAME%%', parameters('OutputStreamName'))]",

// Produce the final output for the query string by trimming the leading and trailing square brackets
"QueryStringFinal": "[substring(variables('QueryStringIter4'), 1, sub(length(variables('QueryStringIter4')), 2))]"

然后我在 Microsoft.StreamAnalytics/streamingjobs 屬性的轉換部分引用它:

"transformation": {
    "name": "Transformation",
    "properties": {
        "streamingUnits": "[parameters('StreamAnalyticsStreamingUnitsScale')]",
        "query": "[variables('QueryStringFinal')]"
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM