DataFrameOperations Osztály
A pandas DataFrame CRUD-műveletek névtere.
Elérhető ezen keresztül: client.dataframe. DataFrame-orientált burkolókat biztosít a rekordszintű CRUD-műveletek köré.
Example:
import pandas as pd
client = DataverseClient(base_url, credential)
# Query records as a DataFrame
df = client.dataframe.get("account", select=["name"], top=100)
# Create records from a DataFrame
new_df = pd.DataFrame([{"name": "Contoso"}, {"name": "Fabrikam"}])
new_df["accountid"] = client.dataframe.create("account", new_df)
# Update records
new_df["telephone1"] = ["555-0100", "555-0200"]
client.dataframe.update("account", new_df, id_column="accountid")
# Delete records
client.dataframe.delete("account", new_df["accountid"])
Konstruktor
DataFrameOperations(client: DataverseClient)
Paraméterek
| Name | Description |
|---|---|
|
client
Kötelező
|
A szülőpéldány DataverseClient . |
Metódusok
| create |
Rekordok létrehozása pandas DataFrame-ből. Tipp. Minden sor egyetlen CreateMultiple-kérelemben lesz elküldve. Nagyon nagy méretű DataFrame-eket, érdemes lehet kisebb kötegekre felosztani a kérelmek időtúllépései. |
| delete |
Rekordokat törölhet egy pandas-sorozat grafikus felhasználói felületének átengedésével. |
| get |
Rekordokat lekérhet, és egyetlen pandas DataFrame-ként térhet vissza. Ha Tipp. Nagyméretű táblák esetén használja a felső vagy a szűrőt az eredményhalmaz korlátozásához. |
| sql |
Hajt végre egy SQL-lekérdezést, és adja vissza az eredményeket pandas DataFrame-ként. sql A rekordok listáját egyetlen DataFrame-fájllá alakítja át. |
| update |
A pandas DataFrame rekordjainak frissítése. A DataFrame minden sora egy frissítést jelöl. Megadja Tipp. Minden sor egyetlen UpdateMultiple-kérelemben (vagy egy egyetlen PATCH egy sorhoz). A nagyon nagy adatkeretek esetében fontolja meg a kisebb kötegekre való felosztással elkerülhetők a kérések időtúllépései. |
create
Rekordok létrehozása pandas DataFrame-ből.
Tipp.
Minden sor egyetlen CreateMultiple-kérelemben lesz elküldve. Nagyon
nagy méretű DataFrame-eket, érdemes lehet kisebb kötegekre felosztani a
kérelmek időtúllépései.
create(table: str, records: DataFrame) -> Series
Paraméterek
| Name | Description |
|---|---|
|
table
Kötelező
|
A tábla sémaneve (pl. |
|
records
Kötelező
|
DataFrame, ahol minden sor létrehozandó rekord. |
Válaszok
| Típus | Description |
|---|---|
|
Létrehozott rekordGUID-k sorozata a bemeneti DataFrame-indexhez igazítva. |
Kivételek
| Típus | Description |
|---|---|
|
Ha |
|
|
Ha |
Példák
Rekordok létrehozása DataFrame-ből:
import pandas as pd
df = pd.DataFrame([
{"name": "Contoso", "telephone1": "555-0100"},
{"name": "Fabrikam", "telephone1": "555-0200"},
])
df["accountid"] = client.dataframe.create("account", df)
delete
Rekordokat törölhet egy pandas-sorozat grafikus felhasználói felületének átengedésével.
delete(table: str, ids: Series, use_bulk_delete: bool = True) -> str | None
Paraméterek
| Name | Description |
|---|---|
|
table
Kötelező
|
A tábla sémaneve (pl. |
|
ids
Kötelező
|
Törölni kívánt rekordGUID-k sorozata. |
|
use_bulk_delete
|
Ha Alapértelmezett érték: True
|
Válaszok
| Típus | Description |
|---|---|
|
str,
|
BulkDelete feladatazonosító, ha több rekordot töröl a BulkDelete-en keresztül; |
Kivételek
| Típus | Description |
|---|---|
|
Ha |
|
|
Ha |
Példák
Rekordok törlése adatsor használatával:
import pandas as pd
ids = pd.Series(["guid-1", "guid-2", "guid-3"])
client.dataframe.delete("account", ids)
get
Rekordokat lekérhet, és egyetlen pandas DataFrame-ként térhet vissza.
Ha record_id meg van adva, egy egysoros DataFrame-et ad vissza.
Ha record_id nincs, belsőleg iterálja az összes oldalt, és egy konszolidált DataFrame-et ad vissza.
Tipp.
Nagyméretű táblák esetén használja a felső vagy a szűrőt az eredményhalmaz korlátozásához.
get(table: str, record_id: str | None = None, select: List[str] | None = None, filter: str | None = None, orderby: List[str] | None = None, top: int | None = None, expand: List[str] | None = None, page_size: int | None = None, count: bool = False, include_annotations: str | None = None) -> DataFrame
Paraméterek
| Name | Description |
|---|---|
|
table
Kötelező
|
A tábla sémaneve (pl. |
|
record_id
|
Egy adott rekord lekéréséhez nem kötelező GUID azonosítót megadni. Ha nincs, több rekordot is lekérdez. Alapértelmezett érték: None
|
|
select
|
A lekérendő attribútumok logikai neveinek választható listája. Alapértelmezett érték: None
|
|
filter
|
Nem kötelező OData szűrősztring. Az oszlopneveknek pontos kisbetűs logikai neveket kell használniuk. Alapértelmezett érték: None
|
|
orderby
|
A rendezendő attribútumok nem kötelező listája. Alapértelmezett érték: None
|
|
top
|
Nem kötelező a visszaadni kívánt rekordok maximális száma. Alapértelmezett érték: None
|
|
expand
|
Nem kötelező a kibontandó navigációs tulajdonságok listája (kis- és nagybetűk megkülönböztetése). Alapértelmezett érték: None
|
|
page_size
|
Oldalszámozáshoz nem kötelező a rekordok száma oldalanként. Alapértelmezett érték: None
|
|
count
|
Ha Alapértelmezett érték: False
|
|
include_annotations
|
OData-széljegyzetminta a Alapértelmezett érték: None
|
Válaszok
| Típus | Description |
|---|---|
|
Az összes egyező rekordot tartalmazó DataFrame. Üres DataFrame-et ad vissza, ha nincsenek egyező rekordok. |
Kivételek
| Típus | Description |
|---|---|
|
Ha |
Példák
Egyetlen rekord beolvasása DataFrame-ként:
df = client.dataframe.get("account", record_id=account_id, select=["name", "telephone1"])
print(df)
Lekérdezés szűréssel:
df = client.dataframe.get("account", filter="statecode eq 0", select=["name"])
print(f"Got {len(df)} active accounts")
Az eredmény méretének korlátozása:
df = client.dataframe.get("account", select=["name"], top=100)
sql
Hajt végre egy SQL-lekérdezést, és adja vissza az eredményeket pandas DataFrame-ként.
sql A rekordok listáját egyetlen DataFrame-fájllá alakítja át.
sql(sql: str) -> DataFrame
Paraméterek
| Name | Description |
|---|---|
|
sql
Kötelező
|
Támogatott SQL SELECT utasítás. |
Válaszok
| Típus | Description |
|---|---|
|
Az összes eredménysort tartalmazó DataFrame. Üres Adatkeretet ad vissza, ha nincsenek egyező sorok. |
Kivételek
| Típus | Description |
|---|---|
|
Ha |
Példák
SQL-lekérdezés a DataFrame-be:
df = client.dataframe.sql(
"SELECT TOP 100 name, revenue FROM account "
"WHERE statecode = 0 ORDER BY revenue"
)
print(f"Got {len(df)} rows")
print(df.head())
Lekérdezés összesítése a DataFrame-be:
df = client.dataframe.sql(
"SELECT a.name, COUNT(c.contactid) as cnt "
"FROM account a "
"JOIN contact c ON a.accountid = c.parentcustomerid "
"GROUP BY a.name"
)
update
A pandas DataFrame rekordjainak frissítése.
A DataFrame minden sora egy frissítést jelöl. Megadja id_column , hogy melyik oszlop tartalmazza a rekord GUID-jait.
Tipp.
Minden sor egyetlen UpdateMultiple-kérelemben (vagy egy
egyetlen PATCH egy sorhoz). A nagyon nagy adatkeretek esetében fontolja meg a
kisebb kötegekre való felosztással elkerülhetők a kérések időtúllépései.
update(table: str, changes: DataFrame, id_column: str, clear_nulls: bool = False) -> None
Paraméterek
| Name | Description |
|---|---|
|
table
Kötelező
|
A tábla sémaneve (pl. |
|
changes
Kötelező
|
DataFrame, ahol minden sor tartalmaz egy rekord GUID azonosítóját és a frissíteni kívánt mezőket. |
|
id_column
Kötelező
|
A rekordGUID-ket tartalmazó DataFrame oszlop neve. |
|
clear_nulls
|
Ha Alapértelmezett érték: False
|
Kivételek
| Típus | Description |
|---|---|
|
Ha |
|
|
Ha üres, nem található a DataFrame-ben, |
Példák
A rekordok frissítése soronként eltérő értékekkel:
import pandas as pd
df = pd.DataFrame([
{"accountid": "guid-1", "telephone1": "555-0100"},
{"accountid": "guid-2", "telephone1": "555-0200"},
])
client.dataframe.update("account", df, id_column="accountid")
Ugyanazt a változást közvetíti az összes rekordra:
df = pd.DataFrame({"accountid": ["guid-1", "guid-2", "guid-3"]})
df["websiteurl"] = "https://example.com"
client.dataframe.update("account", df, id_column="accountid")
Mező törlése a clear_nulls=True beállítással:
df = pd.DataFrame([{"accountid": "guid-1", "websiteurl": None}])
client.dataframe.update("account", df, id_column="accountid", clear_nulls=True)