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=truetanımlanır. Sütunları içerir:ErrorCode,ErrorMessage,ErrorDescriptionve kaynak konum alanları. Şema meta verileri de (onaltılık hata kodu) veFaultString(hata iletisi) içerirFaultCode.
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 |
|---|---|---|---|---|
|
dataset
|
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 |
|
| customData |
string |
Dinamik RLS'de kullanılmak üzere özel veriler. Örneğin, |
|
| 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 |
| customData |
string |
Dinamik RLS'de kullanılmak üzere özel veriler. Örneğin, |
| 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. |