分享方式:


教學課程:撰寫有效的查詢將計量資料上線

重要

從 2023 年 9 月 20 日起,您將無法建立新的計量建議程式資源。 計量建議程式服務將於 2026 年 10 月 1 日淘汰。

在本教學課程中,您會了解如何:

  • 如何撰寫有效的資料上線查詢
  • 常見錯誤和避免方法

必要條件

建立計量建議程式資源

若要匯出計量建議程式的功能,您可能需要在 Azure 入口網站中建立計量建議程式資源,以部署您的計量建議程式執行個體。

資料結構描述需求

Azure AI 計量建議程式是用於時間序列異常偵測、診斷和分析的服務。 作為 AI 服務,其會使用您的資料來定型所使用的模型。 服務接受具有下列資料行的彙總資料資料表:

  • 量值 (必要):量值是基本或單位特定的字詞,也是可量化的計量值。 其表示包含數值的一或多個資料行。
  • 時間戳記 (選用):零或一個類型為 DateTimeString 的資料行。 未設定這個資料行時,時間戳記會設定為每個內嵌期間的開始時間。 格式化時間戳記,如下所示:yyyy-MM-ddTHH:mm:ssZ
  • 維度 (選用):維度是一或多個類別值。 這些值的組合會識別特定的單變量時間序列 (例如國家/地區、語言和租用戶)。 維度資料行可以是任何資料類型。 使用大量資料行和值時請小心,以避免處理過多的維度數。

如果您使用資料來源,例如 Azure Data Lake Storage 或 Azure Blob 儲存體,您可以彙總資料,以符合預期的計量結構描述。 這是因為這些資料來源會使用檔案作為計量輸入。

如果您使用資料來源,例如 Azure SQL 或 Azure 資料總管,您可以使用彙總函數,將資料彙總至預期的結構描述。 這是因為這些資料來源支援執行查詢,以從來源取得計量資料。

計量建議程式如何進行資料擷取?

一般來說,將計量上線至計量建議程式的方法有兩種:

  • 將計量預先彙總至預計的結構描述中,然後將資料儲存至特定檔案。 在上線期間填入路徑範本,計量建議程式便會持續從該路徑擷取新檔案,並在計量上進行偵測。 這是 Azure 資料湖和 Azure Blob 儲存體等資料來源的常見作法。
  • 如果您要從支援使用查詢指令碼的資料來源 (例如 Azure SQL伺服器、Azure Data Explorer 或其他來源) 擷取資料,您必須要正確地建構您的查詢。 本文將教導您如何撰寫有效的查詢,以便如預期般順利將計量資料上線。

什麼是間隔?

必須根據商務需求以特定細微性對計量進行監視。 例如,會以每日細微性對業務關鍵效能指標 (KPI) 進行監視。 不過,通常會以分鐘/小時的細微性對服務效能計量進行監視。 因此,從來源收集計量資料的頻率是不同的。

計量建議程式會在每個時間間隔持續擷取計量資料,間隔等於計量的資料粒度。每次,計量建議程式都會執行您已在此特定間隔寫入擷取資料的查詢。 根據此資料擷取機制,查詢指令碼 不應該傳回於資料庫中存在的所有計量資料,但必須將結果限制為單一間隔。

說明間隔是什麼的圖例

如何撰寫有效的查詢?

Use @IntervalStart and @IntervalEnd to limit query results

為了幫助您達成此目標,我們提供兩個可在查詢內使用的參數:@IntervalStart@IntervalEnd

每次查詢執行時,@IntervalStart 和 @IntervalEnd 都會自動更新為最新的間隔時間戳記,並取得對應的計量資料。 @IntervalEnd 的細微性一律是 @IntervalStart 的細微性 + 1。

以下是在 Azure SQL Server 上正確使用這兩個參數的範例:

SELECT [timestampColumnName] AS timestamp, [dimensionColumnName], [metricColumnName] FROM [sampleTable] WHERE [timestampColumnName] >= @IntervalStart and [timestampColumnName] < @IntervalEnd;

用這種方式撰寫查詢腳本的話,每個查詢結果的計量時間戳記的間隔都應該會相同。 計量建議程式會依據計量的細微性來對齊時間戳記。

使用彙總函式來彙總計量

客戶的資料來源中通常會有許多資料行,但是並非所有資料行都適合監視或納為維度。 客戶可以用彙總函數來彙總計量,並只將有意義的資料行納為維度。

在以下範例中,客戶的資料來源有超過 10 個資料行,但其中只有部分資料行有意義,而必須包含並彙總到要監視的計量中。

TS Market 裝置作業系統 類別 ... Measure1 Measure2 Measure3
2020-09-18T12:23:22Z 紐約 iOS 太陽眼鏡 ... 43242 322 54546
2020-09-18T12:27:34Z 北京 Android ... 3333 126 67677
...

如果客戶想要以每小時的細微度監視「Measure1」,並選擇「市場」和「類別」作為維度,以下範例會說明如何妥善利用彙總函數來達成此目的:

  • SQL 範例:

        SELECT dateadd(hour, datediff(hour, 0, TS),0) as NewTS
        ,Market
        ,Category
        ,sum(Measure1) as M1
        FROM [dbo].[SampleTable] where TS >= @IntervalStart and TS < @IntervalEnd
        group by Market, Category, dateadd(hour, datediff(hour, 0, TS),0)
    
  • Azure 資料總管範例:

        SampleTable
        | where TS >= @IntervalStart and TS < @IntervalEnd
        | summarize M1 = sum(Measure1) by Market, Category, NewTS = startofhour(TS)
    

注意

在上述案例中,客戶想要以每小時的資料細微性監視計量,但原始時間戳記 (TS) 並未對齊。 彙總語句需要一個時間戳記方面的流程,才能以小時對齊,並產生名為「NewTS」的新時間戳記資料行。

上線期間的常見錯誤

  • 錯誤:在查詢結果中找到多個時間戳記值

    如果您沒有限制一個間隔中的查詢結果,就會出現這個常見錯誤。 例如,假設您要以每日的細微性來監視某個計量,如果您的查詢傳回如下的結果,就會發生此錯誤:

    顯示傳回多個時間戳記值的螢幕擷取畫面

    結果中有多個時間戳記值,而且不在同一個計量間隔中 (一天)。 請參閱計量建議程式如何進行資料擷取? 以了解到計量建議程式會在每個計量間隔中擷取計量資料。 然後,請務必在查詢中使用 @IntervalStart@IntervalEnd 以限制一個間隔中的結果數量。 如需詳細的指導和範例,請參閱 Use @IntervalStart and @IntervalEnd to limit query results

  • 錯誤:在一個計量間隔內,針對相同的維度組合找到重複的計量值

    在一個間隔內,計量建議程式預期相同的維度組合只有一個計量值。 例如,假設您要以每日的細微性來監視某個計量,如果您的查詢傳回如下的結果,就會發生此錯誤:

    顯示傳回重複值的螢幕擷取畫面

    如需詳細的指導和範例,請參閱使用彙總函數來彙總計量

下一步

請前往下一篇文章以了解如何建立。