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 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.

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 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.

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ő
str

A tábla sémaneve (pl. "account" vagy "new_MyTestTable").

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 records nem pandas DataFrame.

Ha records üres, vagy a visszaadott azonosítók száma nem egyezik meg a bemeneti sorok számával.

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ő
str

A tábla sémaneve (pl. "account" vagy "new_MyTestTable").

ids
Kötelező

Törölni kívánt rekordGUID-k sorozata.

use_bulk_delete

Ha True (alapértelmezett) és ids több értéket tartalmaz, hajtsa végre a BulkDelete műveletet, és adja vissza annak aszinkron feladatazonosítóját. Ha False minden rekordot egymás után törölnek.

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; None ha egyetlen rekordot töröl, szekvenciális törlést használ, vagy ha ids üres.

Kivételek

Típus Description

Ha ids nem pandas Series.

Ha ids érvénytelen (nem sztringes, üres vagy csak üres) értékeket tartalmaz.

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ő
str

A tábla sémaneve (pl. "account" vagy "new_MyTestTable").

record_id
str

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
list[str] vagy None

A lekérendő attribútumok logikai neveinek választható listája.

Alapértelmezett érték: None
filter
str

Nem kötelező OData szűrősztring. Az oszlopneveknek pontos kisbetűs logikai neveket kell használniuk.

Alapértelmezett érték: None
orderby
list[str] vagy None

A rendezendő attribútumok nem kötelező listája.

Alapértelmezett érték: None
top
int

Nem kötelező a visszaadni kívánt rekordok maximális száma.

Alapértelmezett érték: None
expand
list[str] vagy None

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
int

Oldalszámozáshoz nem kötelező a rekordok száma oldalanként.

Alapértelmezett érték: None
count

Ha True, hozzáadja $count=true a teljes rekordszámot a válaszban.

Alapértelmezett érték: False
include_annotations
str

OData-széljegyzetminta a Prefer: odata.include-annotations fejléchez (pl. "*" vagy "OData.Community.Display.V1.FormattedValue"), vagy None.

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 record_id nem üres sztring, vagy lekérdezési paraméterek ( filterorderbytopexpandpage_sizerecord_id

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ő
str

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 sql nem sztring vagy üres.

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ő
str

A tábla sémaneve (pl. "account" vagy "new_MyTestTable").

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ő
str

A rekordGUID-ket tartalmazó DataFrame oszlop neve.

clear_nulls

Ha False (alapértelmezett) a hiányzó értékek (NaN/None) kihagyása (a mező változatlan marad a kiszolgálón). Ha Truea rendszer hiányzó értékeket küld null a Dataverse-nek, törölje a mezőt. Csak akkor használja True , ha szándékosan szeretné, hogy a NaN/None értékek törölje a mezőket.

Alapértelmezett érték: False

Kivételek

Típus Description

Ha changes nem pandas DataFrame.

Ha üres, nem található a DataFrame-ben, id_column érvénytelen (nem sztringes, üres vagy csak üres) értékeket tartalmaz, vagy nem léteznekclear_nullsid_columnFalseclear_nulls frissíthető oszlopok a következő mellett: id_columnchangesTrue

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)