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 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.
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
|
Schemanamn för tabellen (t.ex. |
|
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 |
|
|
Om |
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
|
Schemanamn för tabellen (t.ex. |
|
ids
Obligatorisk
|
Serie med post-GUID:er som ska tas bort. |
|
use_bulk_delete
|
När Standardvärde: True
|
Returer
| Typ | Description |
|---|---|
|
str,
|
BulkDelete-jobb-ID när du tar bort flera poster via BulkDelete. |
Undantag
| Typ | Description |
|---|---|
|
Om |
|
|
Om |
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
|
Schemanamn för tabellen (t.ex. |
|
record_id
|
Valfritt GUID för att hämta en specifik post. Om ingen, frågar flera poster. Standardvärde: None
|
|
select
|
Valfri lista över logiska attributnamn som ska hämtas. Standardvärde: None
|
|
filter
|
Valfri OData-filtersträng. Kolumnnamn måste använda exakta logiska gemener. Standardvärde: None
|
|
orderby
|
Valfri lista med attribut att sortera efter. Standardvärde: None
|
|
top
|
Valfritt maximalt antal poster som ska returneras. Standardvärde: None
|
|
expand
|
Valfri lista över navigeringsegenskaper som ska expanderas (skiftlägeskänsligt). Standardvärde: None
|
|
page_size
|
Valfritt antal poster per sida för sidnumrering. Standardvärde: None
|
|
count
|
Om Standardvärde: False
|
|
include_annotations
|
OData-anteckningsmönster för 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 |
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
|
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 |
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
|
Schemanamn för tabellen (t.ex. |
|
changes
Obligatorisk
|
DataFrame där varje rad innehåller ett post-GUID och fälten som ska uppdateras. |
|
id_column
Obligatorisk
|
Namnet på den DataFrame-kolumn som innehåller post-GUID. |
|
clear_nulls
|
När Standardvärde: False
|
Undantag
| Typ | Description |
|---|---|
|
Om |
|
|
Om |
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)