Freigeben über


Benutzerdefinierte Abfragespezifikation für kommerziellen Marketplace

Mit dieser Abfragespezifikation können Partner unkompliziert benutzerdefinierte Abfragen zum Extrahieren von Daten aus Analysetabellen formulieren. Mit diesen Abfragen können nur die gewünschten Spalten und Metriken ausgewählt werden, die einem bestimmten Kriterium entsprechen. Der Herzstück der Sprachspezifikation ist die Datasetdefinition, für die eine benutzerdefinierte Abfrage geschrieben werden kann.

Datasets

So wie bestimmte Abfragen für eine Datenbank mit Tabellen und Spalten ausgeführt werden, funktionieren benutzerdefinierte Abfrage für Datasets mit Spalten und Metriken. Die vollständige Liste der für Abfragen verfügbaren Datasets kann mithilfe der Datasets-API abgerufen werden.

Hier sehen Sie ein Beispiel für ein Dataset, das als JSON angezeigt wird.

{
            "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
        }

Bestandteile von Datasets

  • Ein Datasetname ähnelt dem Namen einer Datenbanktabelle, z. B.: ISVUsage. Ein Dataset enthält eine Liste von Spalten, die ausgewählt werden können, z. B. MarketplaceSubscriptionId.
  • Ein Dataset enthält auch Metriken, die den Aggregationsfunktionen einer Datenbank entsprechen, z. B.: NormalizedUsage.
  • Es gibt feste Zeiträume, in denen Daten exportiert werden können.

Formulieren einer Abfrage für ein Dataset

Nachstehend sind einige Beispielabfragen aufgeführt, die zeigen, wie verschiedene Datentypen extrahiert werden.

Abfrage Beschreibung
SELECT MarketplaceSubscriptionId,CustomerId FROM ISVUsage TIMESPAN LAST_MONTH Diese Abfrage ruft alle MarketplaceSubscriptionId und die entsprechenden CustomerId in den letzten ein Monat ab.
SELECT MarketplaceSubscriptionId, EstimatedExtendedChargeCC FROM ISVUsage ORDER BY EstimatedExtendedChargeCC LIMIT 10 Diese Abfrage ruft die 10 wichtigsten Abonnements in abnehmender Reihenfolge der Anzahl der Lizenzen ab, die unter jedem Abonnement verkauft werden.
SELECT CustomerId, NormalizedUsage, RawUsage FROM ISVUsage WHERE NormalizedUsage > 100000 ORDER BY NormalizedUsage TIMESPAN LAST_6_MONTHS Diese Abfrage ruft die NormalizedUsage und RawUsage aller Kunden ab, die NormalizedUsage größer als 100.000 haben.
SELECT MarketplaceSubscriptionId, MonthStartDate, NormalizedUsage FROM ISVUsage WHERE CustomerId IN ('2a31c234-1f4e-4c60-909e-76d234f93161', '80780748-3f9a-11eb-b378-0242ac130002') Diese Abfrage ruft die MarketplaceSubscriptionId und die normalisierte Verwendung für jeden Monat nach den beiden CustomerId Werten ab: 2a31c234-1f4e-4c60-909e-76d234f93161 und 80780748-3f9a-11eb-b378-0242ac130002.

Abfragespezifikation

In diesem Abschnitt werden die Abfragedefinition und -struktur beschrieben.

Grammatikreferenz

In dieser Tabelle werden die in Abfragen verwendeten Symbole beschrieben.

Symbol Bedeutung
? Optional
* 0 oder mehr
+ Ein oder mehr
| Oder/ein Listenwert

Abfragedefinition

Die Abfrageanweisung verfügt über die folgenden Klauseln: SelectClause, FromClause, WhereClause?, OrderClause?, LimitClause? und TimeSpan?.

  • SelectClause: SELECT ColumOrMetricName (, ColumOrMetricName)*
    • ColumOrMetricName: in einem Dataset definierte Spalten und Metriken
  • FromClause: FROM DatasetName
    • DatasetName: der im Dataset definierte Datasetname
  • WhereClause: WHERE FilterCondition (AND FilterCondition)*
    • FilterCondition: ColumOrMetricName-Operatorwert
      • Operator: = | > | < | >= | <= | != | LIKE | NOT LIKE | IN | NOT IN
      • Wert: Zahl | StringLiteral | MultiNumberList | MultiStringList
        • Number: -? [0-9]+ (. [0-9] [0-9]*)?
        • StringLiteral: ' [a-zA-Z0-9_]*'
        • MultiNumberList: (Number (,Number)*)
        • MultiStringList: (StringLiteral (,StringLiteral)*)
  • OrderClause: ORDER BY OrderCondition (,OrderCondition)*
    • OrderCondition: ColumOrMetricName (ASC | DESC)*
  • LimitClause: LIMIT [0-9]+
  • Zeitbereich: TIMESPAN ( HEUTE | GESTERN | 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)

Abfragestruktur

Eine Berichtsabfrage besteht aus mehreren Teilen:

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • LIMIT
  • TIMESPAN

Nachstehend werden die einzelnen Teile beschrieben.

SELECT

Dieser Teil der Abfrage gibt die Spalten an, die exportiert werden. Die auswählbaren Spalten sind die Felder, die in den Abschnitten selectableColumns und availableMetrics eines Datasets aufgeführt sind. Wenn in der ausgewählten Feldliste eine Metrikspalte enthalten ist, werden Metriken für jede unterschiedliche Kombination der nichtmetrischen Spalten berechnet.

Beispiel:

  • SELECT OfferName, NormalizedUsage

DISTINCT

Das Hinzufügen eines DISTINCT-Schlüsselworts nach SELECT stellt sicher, dass die endgültigen exportierten Daten keine doppelten Zeilen enthalten. Das DISTINCT-Schlüsselwort funktioniert unabhängig davon, ob eine Metrikspalte ausgewählt ist.

Beispiel:

  • SELECT DISTINCT MarketplaceSubscriptionId, OfferType

FROM

Dieser Abfrageteil gibt das Dataset an, aus dem Daten exportiert werden müssen. Der hier angegebene Datasetname muss gültiger Datasetname sein, der von der Datasets-API zurückgegeben wird.

Beispiel:

  • FROM ISVUsage
  • FROM ISVOrder

WHERE

In diesem Abfrageteil werden die Filterbedingungen für das Dataset angegeben. Nur Zeilen, die alle in dieser Klausel aufgeführten Bedingungen erfüllen, sind in der endgültigen exportierten Datei vorhanden. Die Filterbedingung kann eine der in selectableColumns und availableMetrics aufgeführten Spalten sein. Bei den in der Filterbedingung angegebenen Werten kann es sich nur um eine Liste von Zahlen oder Zeichenfolgen handeln, wenn der Operator IN oder NOT IN entspricht. Die Werte können immer als Literalzeichenfolge angegeben werden und in die systemeigenen Spaltentypen konvertiert werden. Mehrere Filterbedingungen müssen durch einen AND-Vorgang getrennt werden.

Beispiel:

  • MarketplaceSubscriptionId = '868368da-957d-4959-8992-3c12dc7e6260'
  • CustomerName LIKE '%Contosso%'
  • CustomerId NOT IN (1000, 1001, 1002)
  • OrderQuantity=100
  • Bestellmenge='100'
  • MarketplaceSubscriptionId='7b487ac0-ce12-b732-dcd6-91a1e4e74a50' AND CustomerId=' 0f8b7fa0-eb83-a183-1225-ca153ef807aa'

ORDER BY

Dieser Abfrageteil gibt die Sortierkriterien für die exportierten Zeilen an. Die Spalten, für die die Reihenfolge definiert werden kann, müssen aus selectableColumns und availableMetrics des Datasets stammen. Wenn keine Sortierrichtung angegeben ist, wird sie standardmäßig für die Spalte festgelegt DESC . Die Reihenfolge kann für mehrere Spalten definiert werden, indem die Kriterien durch ein Komma getrennt werden.

Beispiel:

  • ORDER BY NormalizedUsage ASC, EstimatedExtendedCharge(CC) DESC
  • ORDER BY CustomerName ASC, NormalizedUsage

LIMIT

Dieser Teil der Abfrage gibt die Anzahl der exportierten Zeilen an. Die angegebene Zahl muss eine positive ganze Zahl ungleich 0 (Null) sein.

TIMESPAN

Dieser Abfrageteil gibt die Zeitspanne an, für die die Daten exportiert werden müssen. Die möglichen Werte sollten aus dem Feld availableDateRanges der Datasetdefinition stammen.

Beachtung der Groß-/Kleinschreibung in der Abfragespezifikation

Bei der Spezifikation ist die Groß-/Kleinschreibung nicht relevant. Vordefinierte Schlüsselwörter, Spaltennamen und Werte können mit Groß- oder Kleinbuchstaben angegeben werden.

Weitere Informationen