コマーシャル マーケットプレースのカスタム クエリ仕様
パートナーは、このクエリの仕様を使用して、分析テーブルからデータを抽出するためのカスタム クエリを簡単に作成できます。 クエリを使用すると、特定の条件に一致する目的の列とメトリックのみを選択できます。 言語仕様の中核となるのは、カスタム クエリを記述する基礎となるデータセット定義です。
データセット
テーブルと列を含むデータベースに対して一部のクエリが実行されるのと同じように、カスタム クエリは列とメトリックを持つデータセットに対して動作します。 クエリを作成するために使用できるデータセットの完全な一覧は、データセット 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 | このクエリは、過去 1 か月間のすべての 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') | このクエリは、2a31c234-1f4e-4c60-909e-76d234f93161 と80780748-3f9a-11eb-b378-0242ac130002 の 2 つのCustomerId 値によって、毎月のMarketplaceSubscriptionId と正規化された使用状況を取得します。 |
クエリの仕様
このセクションでは、クエリの定義と構造について説明します。
文法リファレンス
この表では、クエリで使用される記号を説明します。
シンボル | 意味 |
---|---|
? | 省略可能 |
* | 0 個以上 |
+ | 1 個以上 |
| | または/リストの中の 1 つ |
[クエリ定義]
クエリ ステートメントには、SelectClause、FromClause、WhereClause、OrderClause、LimitClause、および TimeSpan の各句があります。
- SelectClause: SELECT ColumOrMetricName (, ColumOrMetricName)*
- ColumOrMetricName: データセット内で定義される列とメトリック
- FromClause: FROM DatasetName
- DatasetName: データセット内で定義されるデータセット名
- WhereClause: WHERE FilterCondition (AND FilterCondition)*
- FilterCondition: ColumOrMetricName 演算子値
- Operator: = | > | < | >= | <= | != | LIKE | NOT LIKE | IN | NOT IN
- 値: 数値 |StringLiteral |MultiNumberList |MultiStringList
- Number: -? [0-9]+ (. [0-9] [0-9]*)?
- StringLiteral: ' [a-zA-Z0-9_]*'
- MultiNumberList: (Number (,Number)*)
- 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)
クエリ構造
レポート クエリは次の複数の部分で構成されます。
- 選択
- FROM
- WHERE
- ORDER BY
- LIMIT
- TIMESPAN
各部分について、下で説明します。
選択
クエリのこの部分では、エクスポートされる列を指定します。 選択できる列は、データセットの selectableColumns
と availableMetrics
のセクションに一覧表示されているフィールドです。 選択したフィールド リストにメトリック列が含まれている場合、メトリックは、非メトリック列の個別の組み合わせごとに計算されます。
例:
- SELECT
OfferName
,NormalizedUsage
DISTINCT
SELECT の後に DISTINCT キーワードを追加すると、エクスポートされた最終的なデータに重複する行がないようにします。 DISTINCT キーワードは、メトリック列が選択されているかどうかに関係なく機能します。
例:
- SELECT DISTINCT
MarketplaceSubscriptionId, OfferType
FROM
クエリのこの部分は、データをエクスポートする必要があるデータセットを示します。 ここで指定するデータセット名は、データセット API によって返される有効なデータセット名である必要があります。
例:
- FROM
ISVUsage
- FROM
ISVOrder
WHERE
クエリのこの部分は、データセットのフィルター条件を指定するために使用されます。 この句に記載されているすべての条件に一致する行のみが、エクスポートされた最終的なファイルに存在します。 フィルター条件は、selectableColumns
および availableMetrics
にリストされている任意の列に設定できます。 演算子が 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'
ORDER BY
クエリのこの部分では、エクスポートされる行の順序付け条件を指定します。 順序を定義できる列は、データセットの selectableColumns
および availableMetrics
からのものである必要があります。 順序指定の方向が指定されていない場合、既定では列に DESC
されます。 条件をコンマで区切ることで、複数の列に対して順序付けを定義できます。
例:
- ORDER BY NormalizedUsage ASC, EstimatedExtendedCharge(CC) DESC
- ORDER BY CustomerName ASC, NormalizedUsage
LIMIT
クエリのこの部分では、エクスポートされる行の数を指定します。 指定する数値は、0 以外の正の整数である必要があります。
TIMESPAN
クエリのこの部分では、データをエクスポートする必要がある期間を指定します。 使用可能な値は、データセット定義の availableDateRanges
フィールドから指定する必要があります。
クエリの仕様における大文字と小文字の区別
この仕様では、大文字と小文字はいっさい区別されません。 定義済みのキーワードや列の名前および値は、大文字または小文字を使用して指定できます。