QueryOperations Sınıf
Sorgu işlemleri için ad alanı.
aracılığıyla client.queryerişilir. Dataverse tablolarında sorgu ve arama işlemleri sağlar.
Örnek:
from PowerPlatform.Dataverse.models.filters import col
client = DataverseClient(base_url, credential)
# Fluent query builder (recommended)
for record in (client.query.builder("account")
.select("name", "revenue")
.where(col("statecode") == 0)
.order_by("revenue", descending=True)
.top(100)
.execute()):
print(record["name"])
# SQL query
rows = client.query.sql("SELECT TOP 10 name FROM account ORDER BY name")
for row in rows:
print(row["name"])
Oluşturucu
QueryOperations(client: DataverseClient)
Parametreler
| Name | Description |
|---|---|
|
client
Gerekli
|
Üst DataverseClient örnek. |
Yöntemler
| builder |
Belirtilen tablo için akıcı bir sorgu oluşturucu oluşturun. Filtre, seçme ve sıralama yöntemleriyle zincirlenebilen, ardından doğrudan aracılığıyla |
| fetchxml |
Bir eylemsiz FetchXmlQuery nesne döndürür. Döndürülen nesnede çağrılana kadar veya execute_pages çağrılana kadar execute HTTP isteği yapılmaz. OData builder uç noktasının ifade edemeyeceği SQL-JOIN senaryolar, toplu sorgular veya diğer işlemler için kullanın. Örnek:
|
| odata_bind |
Meta verilerden gezinti özellik adını ve varlık kümesi adını otomatik olarak bulur. Oluşturma veya güncelleştirme yüküyle birleştirilebilen tek girişli bir dikte döndürür. Örnek:
|
| odata_expand |
Gezinti özelliği adını İlişki meta verileri aracılığıyla bulur. parametresi için tam PascalCase dizesini Örnek:
|
| odata_expands |
Tablodan tüm Her giden arama için girdileri döndürür (tek değerli gezinti özelliği). Her girdi ve için Örnek:
|
| odata_select |
için doğrudan öğesine Örnek:
|
| sql |
Dataverse Web API'sini kullanarak salt okunur bir SQL sorgusu yürütür. Dataverse SQL uç noktası, T-SQL'in geniş bir alt kümesini destekler:
Desteklenmez: SELECT >>*<<, alt sorgular, CTE, HAVING, UNION, RIGHT/FULL/CROSS JOIN, CASE, COALESCE, window functions, string/date/math functions, INSERT/UPDATE/DELETE. Yazma işlemleri için yöntemleri kullanın |
| sql_columns |
Bir tablo için SQL tarafından kullanılabilir sütunların basitleştirilmiş bir listesini döndürür. Her dikte (SQL için mantıksal ad), Örnek:
|
builder
Belirtilen tablo için akıcı bir sorgu oluşturucu oluşturun.
Filtre, seçme ve sıralama yöntemleriyle zincirlenebilen, ardından doğrudan aracılığıyla .execute()yürütülebilen bir QueryBuilder döndürür.
builder(table: str) -> QueryBuilder
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablo şeması adı (örn. |
Döndürülenler
| Tür | Description |
|---|---|
|
Bu istemciye bağlı bir QueryBuilder örneği. |
Örnekler
Sorguyu akıcı bir şekilde derleme ve yürütme:
from PowerPlatform.Dataverse.models.filters import col
for record in (client.query.builder("account")
.select("name", "revenue")
.where(col("statecode") == 0)
.where(col("revenue") > 1_000_000)
.order_by("revenue", descending=True)
.top(100)
.page_size(50)
.execute()):
print(record["name"])
Birleştirilebilir ifade ağacıyla:
from PowerPlatform.Dataverse.models.filters import col
for record in (client.query.builder("account")
.where((col("statecode") == 0) | (col("statecode") == 1))
.where(col("revenue") > 100_000)
.execute()):
print(record["name"])
fetchxml
Bir eylemsiz FetchXmlQuery nesne döndürür.
Döndürülen nesnede çağrılana kadar veya execute_pages çağrılana kadar execute HTTP isteği yapılmaz.
OData builder uç noktasının ifade edemeyeceği SQL-JOIN senaryolar, toplu sorgular veya diğer işlemler için kullanın.
Örnek:
query = client.query.fetchxml("""
<fetch top="50">
<entity name="account">
<attribute name="name" />
<link-entity name="contact" from="parentcustomerid"
to="accountid" alias="c" link-type="inner">
<attribute name="fullname" />
</link-entity>
</entity>
</fetch>
""")
# Eager — collect all pages:
result = query.execute()
df = result.to_dataframe()
# Lazy — process one page at a time:
for page in query.execute_pages():
process(page.to_dataframe())
fetchxml(xml: str) -> FetchXmlQuery
Parametreler
| Name | Description |
|---|---|
|
xml
Gerekli
|
İyi biçimlendirilmiş FetchXML sorgu dizesi. Kök |
Döndürülenler
| Tür | Description |
|---|---|
|
ve |
Özel durumlar
| Tür | Description |
|---|---|
|
FetchXML'de kök |
odata_bind
@odata.bind Arama alanı ayarlamak için bir girdi oluşturun.
Meta verilerden gezinti özellik adını ve varlık kümesi adını otomatik olarak bulur. Oluşturma veya güncelleştirme yüküyle birleştirilebilen tek girişli bir dikte döndürür.
Örnek:
# Instead of manually constructing:
# {"parentcustomerid_account@odata.bind": "/accounts(guid)"}
# Just do:
bind = client.query.odata_bind("contact", "account", acct_id)
client.records.create("contact", {
"firstname": "Jane",
"lastname": "Doe",
**bind,
})
odata_bind(from_table: str, to_table: str, target_id: str) -> Dict[str, str]
Parametreler
| Name | Description |
|---|---|
|
from_table
Gerekli
|
Oluşturulan/güncelleştirilen varlığın şema adı. |
|
to_table
Gerekli
|
Aramanın işaret olduğu hedef varlığın şema adı. |
|
target_id
Gerekli
|
Hedef kaydın GUID'i. |
Döndürülenler
| Tür | Description |
|---|---|
|
gibi |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablolar arasında ilişki bulunamazsa. |
odata_expand
Gezinti özelliği adını $expand bir tablodan diğerine döndür.
İlişki meta verileri aracılığıyla bulur. parametresi için tam PascalCase dizesini expand= döndürür.
Örnek:
nav = client.query.odata_expand("contact", "account")
# Returns e.g. "parentcustomerid_account"
for page in client.records.get("contact",
select=["fullname"],
expand=[nav],
top=5):
for r in page:
acct = r.get(nav) or {}
print(f"{r['fullname']} -> {acct.get('name', 'N/A')}")
odata_expand(from_table: str, to_table: str) -> str
Parametreler
| Name | Description |
|---|---|
|
from_table
Gerekli
|
Kaynak tablonun şema adı (örn. |
|
to_table
Gerekli
|
Hedef tablonun şema adı (örn. |
Döndürülenler
| Tür | Description |
|---|---|
|
Gezinti özelliği adı (PascalCase). |
Özel durumlar
| Tür | Description |
|---|---|
|
Hedef için gezinti özelliği bulunamazsa. |
odata_expands
Tablodan tüm $expand gezinti özelliklerini keşfedin.
Her giden arama için girdileri döndürür (tek değerli gezinti özelliği). Her girdi ve için $expand gereken tam PascalCase gezinti özelliği adını ve @odata.bindhedef varlık kümesi adını içerir.
Örnek:
expands = client.query.odata_expands("contact")
for e in expands:
print(f"expand={e['nav_property']} -> {e['target_table']}")
# Use in a query
e = next(e for e in expands if e['target_table'] == 'account')
for page in client.records.get("contact",
select=["fullname"],
expand=[e['nav_property']]):
...
odata_expands(table: str) -> List[Dict[str, Any]]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
Döndürülenler
| Tür | Description |
|---|---|
|
Her biri şu şekilde olan diktelerin listesi:
|
odata_select
için $selectuygun sütun mantıksal adlarının listesini döndürür.
doğrudan öğesine client.records.get(table, select=...)geçirilebilir.
Örnek:
cols = client.query.odata_select("account")
for page in client.records.get("account", select=cols, top=10):
for r in page:
print(r)
odata_select(table: str, *, include_system: bool = False) -> List[str]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
|
include_system
Gerekli
|
Sistem sütunlarını dahil et (varsayılan |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
include_system
|
Default value: False
|
Döndürülenler
| Tür | Description |
|---|---|
|
Küçük harfli sütun mantıksal adlarının listesi. |
sql
Dataverse Web API'sini kullanarak salt okunur bir SQL sorgusu yürütür.
Dataverse SQL uç noktası, T-SQL'in geniş bir alt kümesini destekler:
SELECT / SELECT DISTINCT / SELECT TOP N (0-5000)
FROM table [alias]
INNER JOIN / LEFT JOIN (multi-table, no depth limit)
WHERE (=, !=, >, <, >=, <=, LIKE, IN, NOT IN, IS NULL,
IS NOT NULL, BETWEEN, AND, OR, nested parentheses)
GROUP BY column
ORDER BY column [ASC|DESC]
OFFSET n ROWS FETCH NEXT m ROWS ONLY
COUNT(*), SUM(), AVG(), MIN(), MAX()
SELECT * desteklenmez; sütun adlarını açıkça belirtin.
Bir tablonun kullanılabilir sütun adlarını bulmak için kullanın sql_columns .
Desteklenmez: SELECT >>*<<, alt sorgular, CTE, HAVING, UNION, RIGHT/FULL/CROSS JOIN, CASE, COALESCE, window functions, string/date/math functions, INSERT/UPDATE/DELETE. Yazma işlemleri için yöntemleri kullanın client.records .
sql(sql: str) -> List[Record]
Parametreler
| Name | Description |
|---|---|
|
sql
Gerekli
|
Desteklenen SQL SELECT deyimi. |
Döndürülenler
| Tür | Description |
|---|---|
|
Nesnelerin listesi Record . Satır eşleşmediğinde boş bir liste döndürür. |
Özel durumlar
| Tür | Description |
|---|---|
|
Dize değilse veya boşsa |
Örnekler
Temel sorgu:
rows = client.query.sql(
"SELECT TOP 10 name FROM account ORDER BY name"
)
Toplama ile JOIN:
rows = client.query.sql(
"SELECT a.name, COUNT(c.contactid) as cnt "
"FROM account a "
"JOIN contact c ON a.accountid = c.parentcustomerid "
"GROUP BY a.name"
)
sql_columns
Bir tablo için SQL tarafından kullanılabilir sütunların basitleştirilmiş bir listesini döndürür.
Her dikte (SQL için mantıksal ad), type (Dataverse öznitelik türü), is_pk (birincil anahtar bayrağı) ve label (görünen ad) bulunur name . SQL uç noktası bunları sorgulayamayacağından sanal sütunlar her zaman dışlanır.
Örnek:
cols = client.query.sql_columns("account")
for c in cols:
print(f"{c['name']:30s} {c['type']:20s} PK={c['is_pk']}")
sql_columns(table: str, *, include_system: bool = False) -> List[Dict[str, Any]]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
|
include_system
Gerekli
|
(varsayılan) olduğunda |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
include_system
|
Default value: False
|
Döndürülenler
| Tür | Description |
|---|---|
|
Sütun meta verisi diktelerinin listesi. |