合作夥伴可以使用此查詢規格,輕鬆地制定自定義查詢,以從分析數據表擷取數據。 查詢可用來只選取符合特定準則的所需數據行和計量。 語言規格的核心是可以撰寫自定義查詢的數據集定義。
資料集
與某些查詢針對具有數據表和數據行的資料庫執行的方式相同,自定義查詢適用於具有數據行和計量的數據集。 您可以使用資料集 API 來取得可用來制定查詢的可用資料集完整清單。
以下是顯示為 JSON 的數據集範例。
{
"datasetName": "ISVUsage",
"selectableColumns": [
"MarketplaceSubscriptionId",
"MonthStartDate",
"OfferType",
"AzureLicenseType",
"MarketplaceLicenseType",
"SKU",
"CustomerCountry",
"IsPreviewSKU",
"SKUBillingType",
"VMSize",
"CloudInstanceName",
"OfferName",
"IsPrivateOffer",
"DeploymentMethod",
"CustomerName",
"CustomerCompanyName",
"UsageDate",
"IsNewCustomer",
"CoreSize",
"TrialEndDate",
"CustomerCurrencyCC",
"PriceCC",
"PayoutCurrencyPC",
"EstimatedPricePC",
"UsageReference",
"UsageUnit",
"CustomerId",
"BillingAccountId",
"MeterDimension",
"MeterId",
"PartnerCenterDetectedAnomaly",
"PublisherMarkedAnomaly",
"NewReportedUsage",
"ActionTakenAt",
"ActionTakenBy",
"PlanId",
"ReferenceId",
"ListPriceUSD",
"DiscountedPriceUSD",
"IsPrivatePlan",
"OfferId",
"PrivateOfferId",
"PrivateOfferName",
"BillingId",
"PlanType",
"CustomerAccess",
"PublisherAccess",
"CustomerAdjustmentUSD",
"MultiParty",
"PartnerInfo",
"SalesNotes",
"IsCustomMeter",
"AssetId",
"IsMultisolution",
"VMSubscription"
],
"availableMetrics": [
"NormalizedUsage",
"MeteredUsage",
"RawUsage",
"EstimatedExtendedChargeCC",
"EstimatedExtendedChargePC",
"EstimatedFinancialImpactUSD"
],
"availableDateRanges": [
"LAST_MONTH",
"LAST_3_MONTHS",
"LAST_6_MONTHS",
"LAST_1_YEAR",
"LAST_3_YEARS"
],
"minimumRecurrenceInterval": 1
}
數據集的元件
- 數據集名稱就像資料庫數據表名稱。 例如,ISVUsage。 數據集具有可選取的數據行清單,例如 MarketplaceSubscriptionId。
- 數據集也有計量,就像資料庫中的聚合函數一樣。 例如,NormalizedUsage。
- 有固定的時間範圍可匯出數據。
在資料集上撰寫查詢
以下是一些範例查詢,示範如何擷取各種類型的數據。
| 查詢 | 描述 |
|---|---|
| 選取 MarketplaceSubscriptionId,全客戶ID 從 ISVUsage 時間範圍 上個月 | 此查詢可取得過去一個月的每個 MarketplaceSubscriptionId 及其對應的 CustomerId。 |
| SELECT MarketplaceSubscriptionId, EstimatedExtendedChargeCC FROM ISVUsage ORDER BY EstimatedExtendedChargeCC LIMIT 10 | 此查詢會依每個訂用帳戶下銷售的授權數目遞減順序,取得前 10 個訂用帳戶。 |
| SELECT CustomerId、NormalizedUsage、RawUsage FROM ISVUsage WHERE NormalizedUsage > 100000 ORDER BY NormalizedUsage TIMESPAN LAST_6_MONTHS | 此查詢會取得客戶的 NormalizedUsage 和 RawUsage,其中所有客戶的 NormalizedUsage 大於 100,000。 |
| 選擇 MarketplaceSubscriptionId, MonthStartDate, NormalizedUsage FROM ISVUsage WHERE CustomerId IN ('aaaabbbb-0000-cccc-1111-dddd2222eeee', 'bbbbcccc-1111-dddd-2222-eeee3333ffff') | 藉由兩個 MarketplaceSubscriptionId 值:CustomerId 和 aaaabbbb-0000-cccc-1111-dddd2222eeee,此查詢會取得每個月的 bbbbcccc-1111-dddd-2222-eeee3333ffff 和標準化使用量。 |
查詢規格
本節描述查詢定義和結構。
文法參考
下表描述查詢中使用的符號。
| 象徵 | 意義 |
|---|---|
| ? | 可選 |
| * | 零個或多個 |
| + | 一或多個 |
| | | 或/列表之一 |
查詢定義
查詢語句具有下列子句:SelectClause、FromClause、WhereClause?、OrderClause?、LimitClause?和 TimeSpan?。
-
SelectClause:SELECT ColumOrMetricName (, ColumOrMetricName)*
- ColumOrMetricName:數據集內定義的數據行和計量
-
FromClause: FROM DatasetName
- DatasetName:數據集內定義的數據集名稱
-
WhereClause:WHERE FilterCondition (AND FilterCondition)*
-
FilterCondition:ColumOrMetricName 運算符值
- 運算子:= | > | < | >= | <= | != | LIKE | NOT LIKE | IN | NOT IN
-
值:數字 | StringLiteral | MultiNumberList | MultiStringList
- 數字:-? [0-9]+ (.[0-9] [0-9]*)?
- StringLiteral: ' [a-zA-Z0-9_]*'
- 多數字列表: (數字(,數字)*)
- MultiStringList:(StringLiteral(,StringLiteral)*)
-
FilterCondition:ColumOrMetricName 運算符值
-
OrderClause: ORDER BY OrderCondition (,OrderCondition)*
- OrderCondition: ColumOrMetricName (ASC | DESC)*
- LimitClause: LIMIT [0-9]+
- TimeSpan:TIMESPAN (今天 | 昨天 | 過去7天 | 過去14天 | 過去30天 | 過去90天 | 過去180天 | 過去365天 | 上個月 | 過去3個月 | 過去6個月 | 過去1年)
查詢結構
報表查詢是由多個部分所組成:
- SELECT
- 從
- 哪裡
- 排序依據
- 限制
- 時間跨度
每個部分如下所述。
SELECT
查詢的這個部分會指定匯出的數據行。 可以選取的數據行是數據集 selectableColumns 和 availableMetrics 區段中所列的欄位。 如果選取的欄位清單中包含計量數據行,則會針對非對稱數據行的每個不同組合計算計量。
範例:
-
SELECT
OfferName、NormalizedUsage
獨特的
在 SELECT 之後新增 DISTINCT 關鍵詞可確保最終匯出的數據沒有任何重複的數據列。 DISTINCT 關鍵詞不論是否已選取計量數據行,都適用。
範例:
-
選擇 DISTINCT
MarketplaceSubscriptionId, OfferType
從
查詢的這個部分表示需要匯出數據的數據集。 此處提供的數據集名稱必須是數據集 API 所傳回的有效數據集名稱。
範例:
- 來自
ISVUsage - 來自
ISVOrder
哪裡
查詢的這個部分是用來指定數據集的篩選條件。 只有符合這個子句中所列所有條件的數據列才會出現在最終導出的檔案中。 篩選條件可以在 selectableColumns 和 availableMetrics中所列的任何列上。 篩選條件中指定的值可以是數位清單或字串清單,只有在運算符是 IN 或 NOT IN時。 值一律可以指定為常值字串,而且它們會轉換成原生數據行類型。 需要以 AND 作業分隔多個篩選條件。
範例:
- MarketplaceSubscriptionId = 'aaaabbbb-0000-cccc-1111-dddd2222eeee'
- 客戶名稱 LIKE '%Contosso%'
- CustomerId NOT IN (1000,1001,1002)
- OrderQuantity=100 # 訂購數量=100
- 訂購數量='100'
- MarketplaceSubscriptionId='bbbbcccc-1111-dddd-2222-eeee3333ffff' 和 CustomerId='0f8b7fa0-eb83-a183-1225-ca153ef807aa'
排序依據
查詢的這個部分會指定匯出數據列的排序準則。 可以定義排序的數據行必須來自數據集的 selectableColumns 和 availableMetrics。 如果沒有指定排序方向,則將預設設為該欄的 DESC。 排序可以在多個數據行上定義,方法是以逗號分隔準則。
範例:
- 排序依據 正常化用量 升序,預估延伸費用(CC) 降序
- 排序根據 客戶名稱 升序正規化使用量
限制
查詢的這個部分會指定匯出的數據列數目。 您指定的數字必須是正非零整數。
時間跨度
查詢的這個部分會指定需要匯出數據的時間持續時間。 可能的值應該來自數據集定義中的 [availableDateRanges] 欄位。
查詢設定中的區分大小寫
規格完全不區分大小寫。 您可以使用大寫或小寫來指定預先定義的關鍵字、資料行名稱和值。