商業市集的自定義查詢規格
合作夥伴可以使用此查詢規格,輕鬆地制定自定義查詢,以從分析數據表擷取數據。 查詢可用來只選取符合特定準則的所需數據行和計量。 語言規格的核心是可以撰寫自定義查詢的數據集定義。
資料集
與某些查詢針對具有數據表和數據行的資料庫執行的方式相同,自定義查詢適用於具有數據行和計量的數據集。 您可以使用資料集 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。
- 有固定的時間範圍可匯出數據。
在數據集上制定查詢
以下是一些範例查詢,示範如何擷取各種類型的數據。
查詢 | 描述 |
---|---|
SELECT MarketplaceSubscriptionId,CustomerId FROM ISVUsage TIMESPAN LAST_MONTH | 此查詢會取得過去一個月的每個 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 大於 100,000 之客戶的 NormalizedUsage 和 RawUsage。 |
SELECT MarketplaceSubscriptionId, MonthStartDate, NormalizedUsage FROM ISVUsage WHERE CustomerId IN ('2a31c234-1f4e-4c60-909e-76d234f93161', '80780748-3f9a-11eb-b378-0242ac130002') | 此查詢會依兩CustomerId 個值取得 MarketplaceSubscriptionId 和 每個月的標準化使用量:2a31c234-1f4e-4c60-909e-76d234f93161 和 80780748-3f9a-11eb-b378-0242ac130002 。 |
查詢規格
本節描述查詢定義和結構。
文法參考
下表描述查詢中使用的符號。
符號 | 意義 |
---|---|
? | 選擇性 |
* | 零個或多個 |
+ | 一個或多個 |
| | 或/其中一個清單 |
查詢定義
查詢語句具有下列子句:SelectClause、FromClause、WhereClause?、OrderClause?、LimitClause?和 TimeSpan?。
- SelectClause: SELECT ColumOrMetricName (, ColumOrMetricName)*
- ColumOrMetricName:數據集內定義的數據行和計量
- FromClause: FROM DatasetName
- DatasetName:數據集內定義的數據集名稱
- WhereClause: WHERE FilterCondition (AND FilterCondition)*
- FilterCondition:ColumOrMetricName 運算符值
- 運算子: = | > | | > <= |<= | != |LIKE |不喜歡 |IN |NOT IN
- 值:數位 |StringLiteral |MultiNumberList |MultiStringList
- 數位: -? [0-9]+ (.[0-9] [0-9]*)?
- StringLiteral: ' [a-zA-Z0-9_]*'
- MultiNumberList: (數位(,數位)*)
- MultiStringList: (StringLiteral (,StringLiteral)*)
- FilterCondition:ColumOrMetricName 運算符值
- OrderClause: ORDER BY OrderCondition (,OrderCondition)*
- OrderCondition: ColumOrMetricName (ASC | DESC)*
- LimitClause: LIMIT [0-9]+
- TimeSpan:TIMESPAN ( TODAY |昨天 |LAST_7_DAYS |LAST_14_DAYS |LAST_30_DAYS |LAST_90_DAYS |LAST_180_DAYS |LAST_365_DAYS |LAST_MONTH |LAST_3_MONTHS |LAST_6_MONTHS |LAST_1_YEAR)
查詢結構
報表查詢是由多個部分所組成:
- SELECT
- FROM
- WHERE
- 排序依據
- LIMIT
- TIMESPAN
每個部分如下所述。
SELECT
查詢的這個部分會指定匯出的數據行。 可以選取的數據行是數據集和selectableColumns
availableMetrics
區段中所列的欄位。 如果選取的欄位清單中包含計量數據行,則會針對非對稱數據行的每個不同組合計算計量。
範例:
- SELECT
OfferName
、NormalizedUsage
DISTINCT
在 SELECT 之後新增 DISTINCT 關鍵詞可確保最終匯出的數據沒有任何重複的數據列。 DISTINCT 關鍵詞不論是否已選取計量數據行,都適用。
範例:
- SELECT DISTINCT
MarketplaceSubscriptionId, OfferType
FROM
查詢的這個部分表示需要匯出數據的數據集。 此處提供的數據集名稱必須是數據集 API 所傳回的有效數據集名稱。
範例:
- 從
ISVUsage
- 從
ISVOrder
WHERE
查詢的這個部分是用來指定數據集的篩選條件。 只有符合這個子句中所列所有條件的數據列才會出現在最終導出的檔案中。 篩選條件可以位於和 availableMetrics
中selectableColumns
所列的任何數據行上。 篩選條件中指定的值可以是數位清單或字串清單,只有在運算符為 IN
或 NOT IN
時。 值一律可以指定為常值字串,而且它們會轉換成原生數據行類型。 需要以 AND
作業分隔多個篩選條件。
範例:
- MarketplaceSubscriptionId = '868368da-957d-4959-8992-3c12dc7e6260'
- CustomerName LIKE '%Contosso%'
- CustomerId NOT IN (1000, 1001, 1002)
- OrderQuantity=100
- OrderQuantity='100'
- MarketplaceSubscriptionId='7b487ac0-ce12-b732-dcd6-91a1e4e74a50' AND CustomerId=' 0f8b7fa0-eb83-a183-1225-ca153ef807aa'
排序依據
查詢的這個部分會指定匯出數據列的排序準則。 可以定義排序的數據行必須來自 selectableColumns
和 availableMetrics
數據集。 如果沒有指定排序方向,則預設 DESC
為資料列上的 。 排序可以在多個數據行上定義,方法是以逗號分隔準則。
範例:
- ORDER BY NormalizedUsage ASC, EstimatedExtendedCharge(CC) DESC
- ORDER BY CustomerName ASC, NormalizedUsage
LIMIT
查詢的這個部分會指定匯出的數據列數目。 您指定的數字必須是正非零整數。
TIMESPAN
查詢的這個部分會指定需要匯出數據的時間持續時間。 可能的值應該來自 availableDateRanges
數據集定義中的欄位。
查詢規格中的區分大小寫
規格完全不區分大小寫。 您可以使用大寫或小寫來指定預先定義的關鍵字、資料行名稱和值。