DataFrameOperations Klass

Namnområde för PANDAS DataFrame CRUD-åtgärder.

Nås via client.dataframe. Tillhandahåller DataFrame-orienterade omslutningar kring CRUD-åtgärder på postnivå.

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)

Parametrar

Name Description
client
Obligatorisk

Den överordnade DataverseClient instansen.

Metoder

create

Skapa poster från en Pandas DataFrame.

Tip

Alla rader skickas i en enda CreateMultiple-begäran. För mycket

stora dataramar bör du överväga att dela upp i mindre batchar för att undvika

timeouter för begäran.

delete

Ta bort poster genom att skicka en Pandas-serie med GUID:er.

get

Hämta poster och returnera som en enda Pandas DataFrame.

När record_id anges returnerar en dataram med en rad. När record_id är Ingen itererar internt alla sidor och returnerar en konsoliderad DataFrame.

Tip

För stora tabeller använder du överkant eller filter för att begränsa resultatuppsättningen.

sql

Kör en SQL-fråga och returnera resultatet som en Pandas DataFrame.

Delegerar till sql och konverterar listan över poster till en enda DataFrame.

update

Uppdatera poster från en Pandas DataFrame.

Varje rad i DataFrame representerar en uppdatering. id_column Anger vilken kolumn som innehåller postens GUID.

Tip

Alla rader skickas i en enda UpdateMultiple-begäran (eller en

enskild PATCH för en rad). För mycket stora DataFrames bör du överväga

dela upp i mindre batchar för att undvika tidsgränser för begäran.

create

Skapa poster från en Pandas DataFrame.

Tip

Alla rader skickas i en enda CreateMultiple-begäran. För mycket

stora dataramar bör du överväga att dela upp i mindre batchar för att undvika

timeouter för begäran.

create(table: str, records: DataFrame) -> Series

Parametrar

Name Description
table
Obligatorisk
str

Schemanamn för tabellen (t.ex. "account" eller "new_MyTestTable").

records
Obligatorisk

DataFrame där varje rad är en post att skapa.

Returer

Typ Description

Serie med skapade post-GUID:er, justerade med dataramindexet för indata.

Undantag

Typ Description

Om records inte är en Pandas DataFrame.

Om records är tomt eller om antalet returnerade ID:n inte matchar antalet indatarader.

Exempel

Skapa poster från en DataFrame:


   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

Ta bort poster genom att skicka en Pandas-serie med GUID:er.

delete(table: str, ids: Series, use_bulk_delete: bool = True) -> str | None

Parametrar

Name Description
table
Obligatorisk
str

Schemanamn för tabellen (t.ex. "account" eller "new_MyTestTable").

ids
Obligatorisk

Serie med post-GUID:er som ska tas bort.

use_bulk_delete

När True (standard) och ids innehåller flera värden kör du åtgärden BulkDelete och returnerar dess asynkrona jobbidentifierare. När False varje post tas bort sekventiellt.

Standardvärde: True

Returer

Typ Description
str,

BulkDelete-jobb-ID när du tar bort flera poster via BulkDelete. None när du tar bort en enskild post, använder sekventiell borttagning eller när ids är tom.

Undantag

Typ Description

Om ids inte är en Pandas-serie.

Om ids innehåller ogiltiga (icke-sträng-, tomma eller blankstegsbaserade) värden.

Exempel

Ta bort poster med hjälp av en serie:


   import pandas as pd

   ids = pd.Series(["guid-1", "guid-2", "guid-3"])
   client.dataframe.delete("account", ids)

get

Hämta poster och returnera som en enda Pandas DataFrame.

När record_id anges returnerar en dataram med en rad. När record_id är Ingen itererar internt alla sidor och returnerar en konsoliderad DataFrame.

Tip

För stora tabeller använder du överkant eller filter för att begränsa resultatuppsättningen.

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

Parametrar

Name Description
table
Obligatorisk
str

Schemanamn för tabellen (t.ex. "account" eller "new_MyTestTable").

record_id
str

Valfritt GUID för att hämta en specifik post. Om ingen, frågar flera poster.

Standardvärde: None
select
list[str] eller None

Valfri lista över logiska attributnamn som ska hämtas.

Standardvärde: None
filter
str

Valfri OData-filtersträng. Kolumnnamn måste använda exakta logiska gemener.

Standardvärde: None
orderby
list[str] eller None

Valfri lista med attribut att sortera efter.

Standardvärde: None
top
int

Valfritt maximalt antal poster som ska returneras.

Standardvärde: None
expand
list[str] eller None

Valfri lista över navigeringsegenskaper som ska expanderas (skiftlägeskänsligt).

Standardvärde: None
page_size
int

Valfritt antal poster per sida för sidnumrering.

Standardvärde: None
count

Om Truelägger till $count=true för att inkludera ett totalt antal poster i svaret.

Standardvärde: False
include_annotations
str

OData-anteckningsmönster för Prefer: odata.include-annotations rubriken (t.ex. "*" eller "OData.Community.Display.V1.FormattedValue"), eller None.

Standardvärde: None

Returer

Typ Description

DataFrame som innehåller alla matchande poster. Returnerar en tom DataFrame när inga poster matchar.

Undantag

Typ Description

Om record_id inte är en icke-tom sträng eller om frågeparametrarna ( filterorderbytopexpandpage_sizerecord_id

Exempel

Hämta en enskild post som en DataFrame:


   df = client.dataframe.get("account", record_id=account_id, select=["name", "telephone1"])
   print(df)

Fråga med filtrering:


   df = client.dataframe.get("account", filter="statecode eq 0", select=["name"])
   print(f"Got {len(df)} active accounts")

Begränsa resultatstorleken:


   df = client.dataframe.get("account", select=["name"], top=100)

sql

Kör en SQL-fråga och returnera resultatet som en Pandas DataFrame.

Delegerar till sql och konverterar listan över poster till en enda DataFrame.

sql(sql: str) -> DataFrame

Parametrar

Name Description
sql
Obligatorisk
str

SQL SELECT-instruktion som stöds.

Returer

Typ Description

DataFrame som innehåller alla resultatrader. Returnerar en tom DataFrame när inga rader matchar.

Undantag

Typ Description

Om sql inte är en sträng eller är tom.

Exempel

SQL-fråga till DataFrame:


   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())

Aggregera fråga till DataFrame:


   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

Uppdatera poster från en Pandas DataFrame.

Varje rad i DataFrame representerar en uppdatering. id_column Anger vilken kolumn som innehåller postens GUID.

Tip

Alla rader skickas i en enda UpdateMultiple-begäran (eller en

enskild PATCH för en rad). För mycket stora DataFrames bör du överväga

dela upp i mindre batchar för att undvika tidsgränser för begäran.

update(table: str, changes: DataFrame, id_column: str, clear_nulls: bool = False) -> None

Parametrar

Name Description
table
Obligatorisk
str

Schemanamn för tabellen (t.ex. "account" eller "new_MyTestTable").

changes
Obligatorisk

DataFrame där varje rad innehåller ett post-GUID och fälten som ska uppdateras.

id_column
Obligatorisk
str

Namnet på den DataFrame-kolumn som innehåller post-GUID.

clear_nulls

När False (standard) hoppas saknade värden (NaN/None) över (fältet lämnas oförändrat på servern). När Trueskickas null saknade värden till Dataverse och rensar fältet. Använd True endast när du avsiktligt vill att NaN/None-värden ska rensa fält.

Standardvärde: False

Undantag

Typ Description

Om changes inte är en Pandas DataFrame.

Om changes är tomt, id_column inte hittas i DataFrame, id_column innehåller ogiltiga (icke-sträng, tomma eller endast blanksteg) eller inga uppdateringsbara id_columnclear_nulls kolumner finns förutom är Falseclear_nullsTrue

Exempel

Uppdatera poster med olika värden per rad:


   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")

Sänd samma ändring till alla poster:


   df = pd.DataFrame({"accountid": ["guid-1", "guid-2", "guid-3"]})
   df["websiteurl"] = "https://example.com"
   client.dataframe.update("account", df, id_column="accountid")

Rensa ett fält genom att ange clear_nulls=Sant:


   df = pd.DataFrame([{"accountid": "guid-1", "websiteurl": None}])
   client.dataframe.update("account", df, id_column="accountid", clear_nulls=True)