Datasets - Execute Dax Queries

Sağlanan veri kümesinde Veri Çözümleme İfadeleri (DAX) sorguları yürütür. Veri kümesi Çalışma alanım'da bulunmalıdır. Yanıt Apache Ok biçiminde döndürülür.

İzinler veya sorgu hataları aşağıdakilere neden olur:

  • XMLA endpoint feature is disabled. Turn on the tenant setting 'Allow XMLA endpoints and Analyze in Excel with on-premises semantic models' to enable this feature.gibi bir yanıt hatası.
  • Hata ayrıntılarını içeren bir kayıt toplu işlemiyle başarılı bir HTTP durum kodu (200).

Permissions

Tümleştirme ayarlarıaltında bulunan Veri Kümesi Yürütme Sorguları REST API kiracı ayarı etkinleştirilmelidir.

Kullanıcının veri kümesi okuma ve derleme izinlerine sahip olması gerekir. Daha fazla bilgi için bkz. veri kümesi erişim izinlerini yönetme.

Gerekli Kapsam

Dataset.ReadWrite.All veya Dataset.Read.All

Limitations

  • Bu API yalnızca kapasitede barındırılan veri kümeleri için kullanılabilir.
  • Azure Analysis Services'te barındırılan veya şirket içi Azure Analysis Services modeliyle canlı bağlantısı olan veri kümeleri desteklenmez.
  • API çağrısı başına bir sorgu, ancak sorgunun birden çok evaluate deyimi olabilir.
  • Sorgulanan veri kümesinden bağımsız olarak kullanıcı başına dakikada 120 sorgu isteği sınırı vardır.
  • Hizmet Sorumlularını kullanmak için, hizmet sorumlularının Geliştirici ayarları altındaPower BI API'lerini kullanmasına izin veryönetici kiracı ayarının etkinleştirildiğinden emin olun. RLS ile anlam modelleri hakkında daha fazla bilgi için bkz. RLS sınırlamaları.
  • Şu anda yalnızca DAX sorguları ve BİlGİ işlevleri desteklenmektedir. MDX ve DMV sorguları desteklenmez.

Yanıt Biçimi

Yanıt gövdesi bir veya daha fazla birleştirilmiş Apache Ok IPC akışı içerir. Her akış kendi şeması ve kayıt toplu işleri ile bağımsızdır. Yanıtı işlemek için bir Apache Arrow istemci kitaplığı kullanın.

Yanıt, şema düzeyi meta verileri (Ok şemasındaki anahtar-değer çiftleri) tarafından tanımlanan aşağıdaki satır kümesi türlerini içerebilir:

  • Veri satır kümesi: Sorgu sonuçlarını içerir. Özel meta veri anahtarı yok. Sütun adları ve türleri DAX sorgusu tarafından belirlenir.
  • Hata satır kümesi: Şema meta verilerinde tarafından IsError = true tanımlanır. Sütunları içerir: ErrorCode, ErrorMessage, ErrorDescriptionve kaynak konum alanları. Şema meta verileri de (onaltılık hata kodu) ve FaultString (hata iletisi) içerir FaultCode .

Yanıttaki toplu işleri kaydetme işlemi sıkıştırma LZ4_FRAME kullanır. Pyarrow kitaplığı bunu otomatik olarak işler. .NET için Apache.Arrow.Compression NuGet paketini yükleyin.

Important

Sorgu hataları, Ok akışında hata satır kümesiyle HTTP 200 döndürür. Başarılı HTTP durum kodlarında bile şema meta verilerini IsError her zaman denetleyin.

Aşağıdaki Python örnekte pyarrow kullanılarak verilerin nasıl okunduğu ve hataların nasıl denetlenduğu gösterilmektedir:

import io
import pyarrow as pa

# response = requests.post(url, headers=headers, json=request_body)
stream = io.BytesIO(response.content)
results = []

while stream.tell() < len(response.content):
    try:
        reader = pa.ipc.open_stream(stream)
        table = reader.read_all()
        metadata = {
            k.decode(): v.decode()
            for k, v in (reader.schema.metadata or {}).items()
        }
        if metadata.get("IsError") == "true":
            raise RuntimeError(
                f"Query error [{metadata.get('FaultCode')}]: "
                f"{metadata.get('FaultString')}"
            )
        else:
            results.append(table)
    except pa.ArrowInvalid:
        break

print(results[0].to_pandas())

.NET için bu SDK'da akış ayrıştırma, hata algılama ve LZ4 sıkıştırmasını işleyen DaxQueryArrowResponseReader sınıfını kullanın.

POST https://api.powerbi.com/v1.0/myorg/datasets/{datasetId}/executeDaxQueries

URI Parametreleri

Name İçinde Gerekli Tür Description
datasetId
path True

string (uuid)

Veri kümesi kimliği

İstek Gövdesi

Name Gerekli Tür Description
query True

string

Sorgu metni.

applicationContext

string

bir işlem hakkında ek bilgi içeren JSON yapısı.

culture

string

Gibi en-USyerel ayara özgü sorgu biçimlendirmesini denetleyan kültür kodu. Desteklenen kültür kodları hakkında daha fazla bilgi için bkz. Power BI için Supported languages and countries/regions.

customData

string

Dinamik RLS'de kullanılmak üzere özel veriler. Örneğin, North America modelin CUSTOMDATA() işlevi tarafından başvurulabilir.

effectiveUsername

string

Sorgu için geçerli kullanıcı adı.

memoryLimit

integer (int64)

Sorgu için bellek sınırı (KB cinsinden).

queryTimeout

integer

Saniyeler içinde sorgu zaman aşımı.

resultSetRowCountLimit

integer

Döndürülecek en fazla satır sayısı. Varsayılan değer 1.000.000 satırdır.

roles

string[]

Kullanıcıya atanan roller.

schemaOnly

boolean

Sorgunun yalnızca şema döndürmesi gerekip gerekmediği.

Yanıtlar

Name Tür Description
200 OK

string

Sorgu başarıyla yürütüldü. Apache Arrow biçimli ikili verileri döndürür.

Media Types: "application/vnd.apache.arrow.stream"

Örnekler

Execute query with culture
Execute query with custom data
Execute query with effective username
Execute simple DAX query

Execute query with culture

Örnek isteği

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE ROW(\"Formatted Date\", FORMAT(DATE(2024, 12, 31), \"Long Date\"))",
  "culture": "en-US"
}

Örnek yanıt

Execute query with custom data

Örnek isteği

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE FILTER('Sales', 'Sales'[Region] = CUSTOMDATA())",
  "customData": "North America"
}

Örnek yanıt

Execute query with effective username

Örnek isteği

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE SUMMARIZECOLUMNS('Sales'[Region], \"Total\", SUM('Sales'[Amount]))",
  "effectiveUsername": "user@contoso.com",
  "roles": [
    "SalesRole"
  ],
  "queryTimeout": 300
}

Örnek yanıt

Execute simple DAX query

Örnek isteği

POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE VALUES('Product'[Category])",
  "queryTimeout": 600,
  "schemaOnly": false,
  "resultSetRowCountLimit": 100000
}

Örnek yanıt

Tanımlar

DatasetExecuteDaxQueriesRequest

Bir veri kümesinde sorgu yürütme isteği

Name Tür Description
applicationContext

string

bir işlem hakkında ek bilgi içeren JSON yapısı.

culture

string

Gibi en-USyerel ayara özgü sorgu biçimlendirmesini denetleyan kültür kodu. Desteklenen kültür kodları hakkında daha fazla bilgi için bkz. Power BI için Supported languages and countries/regions.

customData

string

Dinamik RLS'de kullanılmak üzere özel veriler. Örneğin, North America modelin CUSTOMDATA() işlevi tarafından başvurulabilir.

effectiveUsername

string

Sorgu için geçerli kullanıcı adı.

memoryLimit

integer (int64)

Sorgu için bellek sınırı (KB cinsinden).

query

string

Sorgu metni.

queryTimeout

integer

Saniyeler içinde sorgu zaman aşımı.

resultSetRowCountLimit

integer

Döndürülecek en fazla satır sayısı. Varsayılan değer 1.000.000 satırdır.

roles

string[]

Kullanıcıya atanan roller.

schemaOnly

boolean

Sorgunun yalnızca şema döndürmesi gerekip gerekmediği.