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

重要

從 2023 年 9 月 20 日起,您將無法建立新的 Metrics Advisor 資源。 Metrics Advisor 服務將于 2026 年 10 月 1 日淘汰。

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

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

必要條件

建立 Metrics Advisor 資源

若要探索 Metrics Advisor 的功能,您可能需要 在 Azure 入口網站 中建立 Metrics Advisor 資源 ,以部署您的 Metrics Advisor 實例。

資料架構需求

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

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

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

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

資料擷取如何在 Metrics Advisor 中運作?

將計量上線至 Metrics Advisor 時,一般有兩種方式:

  • 將計量預先匯總至預期的架構,並將資料儲存至特定檔案。 在上線期間填入路徑範本,Metrics Advisor 會持續從路徑擷取新檔案,並在計量上執行偵測。 這是 Azure Data Lake 和 Azure Blob 儲存體 等資料來源的常見作法。
  • 如果您要從 Azure SQL Server、Azure 資料總管或其他來源等資料來源擷取資料,其支援使用查詢腳本,而不是您需要確定您已正確建構查詢。 本文將教導您如何撰寫有效的查詢,以如預期般將計量資料上線。

什麼是間隔?

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

Metrics Advisor 會持續擷取每個時間間隔的計量資料, 間隔等於計量的資料細微性。 每次,Metrics Advisor 都會執行您已在此特定間隔寫入擷取資料的查詢。 根據此資料擷取機制,查詢腳本 不應傳回資料庫中存在的所有計量資料,但必須將結果限制為單一間隔。

Illustration that describes what is an interval

如何撰寫有效的查詢?

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;

藉由以這種方式撰寫查詢腳本,計量的時間戳記應該會在每個查詢結果的相同間隔內下降。 Metrics Advisor 會自動將時間戳記與計量的資料細微性對齊。

使用彙總函式來匯總計量

不過,客戶資料來源內有許多資料行,但並非所有資料行都是有道理的,可以監視或包含為維度。 客戶可以使用彙總函式來匯總計量,並只將有意義的資料行納入維度。

以下是客戶資料來源中有超過 10 個數據行的範例,但其中只有一些資料行有意義,而且需要包含並匯總成要監視的計量。

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

如果客戶想要以 每小時的資料細微性 監視 'Measure1' ,並選擇 'Market' 'Category' 作為維度,以下是如何適當地利用匯總函式來達成此目的的範例:

  • 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' 的新時間戳記資料行。

上線期間的常見錯誤

  • 錯誤: 查詢結果中發現多個時間戳記值

    如果您未在一個間隔內限制查詢結果,這是常見的錯誤。 例如,如果您要以每日資料細微性監視計量,如果您的查詢傳回如下的結果,您就會收到此錯誤:

    Screenshot that shows multiple timestamp values returned

    有多個時間戳記值,而且它們不是在相同的計量間隔(一天)。 檢查 Metrics Advisor 中的資料擷取如何運作? 並瞭解 Metrics Advisor 會在每個計量間隔擷取計量資料。 然後,請務必在查詢中使用 @IntervalStart @IntervalEnd ,以限制一個間隔內的結果。 檢查 Use @IntervalStart and @IntervalEnd to limit query results 詳細的指引和範例。

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

    在一個間隔內,Metrics Advisor 只預期相同維度組合的一個計量值。 例如,如果您要以每日資料細微性監視計量,如果您的查詢傳回如下的結果,您就會收到此錯誤:

    Screenshot that shows duplicate values returned

    如需 詳細指引和範例, 請參閱使用彙總函式來匯總計量。

下一步

請前進到下一篇文章,以瞭解如何建立。