DataFrameOperations Classe
Spazio dei nomi per le operazioni CRUD del dataframe pandas.
Accesso tramite client.dataframe. Fornisce wrapper orientati ai dataframe per le operazioni CRUD a livello di record.
Esempio:
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"])
Costruttore
DataFrameOperations(client: DataverseClient)
Parametri
| Nome | Descrizione |
|---|---|
|
client
Necessario
|
Istanza padre DataverseClient . |
Metodi
| create |
Creare record da un dataframe pandas. Tip Tutte le righe vengono inviate in una singola richiesta CreateMultiple. Per molto dataframe di grandi dimensioni, prendere in considerazione la suddivisione in batch più piccoli per evitare timeout della richiesta. |
| delete |
Eliminare i record passando una serie pandas di GUID. |
| get |
Recuperare i record e restituire come singolo dataframe pandas. Quando Tip Per le tabelle di grandi dimensioni, usare top o filter per limitare il set di risultati. |
| sql |
Eseguire una query SQL e restituire i risultati come dataframe pandas. Delegati in sql e converte l'elenco di record in un singolo dataframe. |
| update |
Aggiornare i record da un dataframe pandas. Ogni riga nel dataframe rappresenta un aggiornamento.
Tip Tutte le righe vengono inviate in una singola richiesta UpdateMultiple (o patch singola per una riga. Per i dataframe molto grandi, prendere in considerazione suddivisione in batch più piccoli per evitare timeout delle richieste. |
create
Creare record da un dataframe pandas.
Tip
Tutte le righe vengono inviate in una singola richiesta CreateMultiple. Per molto
dataframe di grandi dimensioni, prendere in considerazione la suddivisione in batch più piccoli per evitare
timeout della richiesta.
create(table: str, records: DataFrame) -> Series
Parametri
| Nome | Descrizione |
|---|---|
|
table
Necessario
|
Nome dello schema della tabella ,ad esempio |
|
records
Necessario
|
DataFrame in cui ogni riga è un record da creare. |
Valori restituiti
| Tipo | Descrizione |
|---|---|
|
Serie di GUID di record creati, allineati all'indice dataframe di input. |
Eccezioni
| Tipo | Descrizione |
|---|---|
|
Se |
|
|
Se |
Esempio
Creare record da un 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
Eliminare i record passando una serie pandas di GUID.
delete(table: str, ids: Series, use_bulk_delete: bool = True) -> str | None
Parametri
| Nome | Descrizione |
|---|---|
|
table
Necessario
|
Nome dello schema della tabella ,ad esempio |
|
ids
Necessario
|
Serie di GUID di record da eliminare. |
|
use_bulk_delete
|
Quando Valore predefinito: True
|
Valori restituiti
| Tipo | Descrizione |
|---|---|
|
str,
|
BulkDelete JOB ID quando si eliminano più record tramite BulkDelete; |
Eccezioni
| Tipo | Descrizione |
|---|---|
|
Se |
|
|
Se |
Esempio
Eliminare record usando una serie:
import pandas as pd
ids = pd.Series(["guid-1", "guid-2", "guid-3"])
client.dataframe.delete("account", ids)
get
Recuperare i record e restituire come singolo dataframe pandas.
Quando record_id viene specificato, restituisce un dataframe a riga singola.
Quando record_id è Nessuno, esegue internamente l'iterazione di tutte le pagine e restituisce un dataframe consolidato.
Tip
Per le tabelle di grandi dimensioni, usare top o filter per limitare il set di risultati.
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
Parametri
| Nome | Descrizione |
|---|---|
|
table
Necessario
|
Nome dello schema della tabella ,ad esempio |
|
record_id
|
GUID facoltativo per recuperare un record specifico. Se Nessuno, esegue una query su più record. Valore predefinito: None
|
|
select
|
Elenco facoltativo di nomi logici degli attributi da recuperare. Valore predefinito: None
|
|
filter
|
Stringa di filtro OData facoltativa. I nomi delle colonne devono usare nomi logici minuscoli esatti. Valore predefinito: None
|
|
orderby
|
Elenco facoltativo di attributi per cui eseguire l'ordinamento. Valore predefinito: None
|
|
top
|
Numero massimo facoltativo di record da restituire. Valore predefinito: None
|
|
expand
|
Elenco facoltativo delle proprietà di navigazione da espandere (con distinzione tra maiuscole e minuscole). Valore predefinito: None
|
|
page_size
|
Numero facoltativo di record per paginazione. Valore predefinito: None
|
|
count
|
Se Valore predefinito: False
|
|
include_annotations
|
Modello di annotazione OData per l'intestazione Valore predefinito: None
|
Valori restituiti
| Tipo | Descrizione |
|---|---|
|
DataFrame contenente tutti i record corrispondenti. Restituisce un dataframe vuoto quando nessun record corrisponde. |
Eccezioni
| Tipo | Descrizione |
|---|---|
|
Se |
Esempio
Recuperare un singolo record come dataframe:
df = client.dataframe.get("account", record_id=account_id, select=["name", "telephone1"])
print(df)
Query con filtro:
df = client.dataframe.get("account", filter="statecode eq 0", select=["name"])
print(f"Got {len(df)} active accounts")
Limitare le dimensioni dei risultati:
df = client.dataframe.get("account", select=["name"], top=100)
sql
Eseguire una query SQL e restituire i risultati come dataframe pandas.
Delegati in sql e converte l'elenco di record in un singolo dataframe.
sql(sql: str) -> DataFrame
Parametri
| Nome | Descrizione |
|---|---|
|
sql
Necessario
|
Istruzione SQL SELECT supportata. |
Valori restituiti
| Tipo | Descrizione |
|---|---|
|
DataFrame contenente tutte le righe dei risultati. Restituisce un dataframe vuoto quando non corrispondono righe. |
Eccezioni
| Tipo | Descrizione |
|---|---|
|
Se |
Esempio
Query SQL nel 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())
Query di aggregazione nel 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
Aggiornare i record da un dataframe pandas.
Ogni riga nel dataframe rappresenta un aggiornamento.
id_column Specifica la colonna contenente i GUID del record.
Tip
Tutte le righe vengono inviate in una singola richiesta UpdateMultiple (o
patch singola per una riga. Per i dataframe molto grandi, prendere in considerazione
suddivisione in batch più piccoli per evitare timeout delle richieste.
update(table: str, changes: DataFrame, id_column: str, clear_nulls: bool = False) -> None
Parametri
| Nome | Descrizione |
|---|---|
|
table
Necessario
|
Nome dello schema della tabella ,ad esempio |
|
changes
Necessario
|
DataFrame in cui ogni riga contiene un GUID di record e i campi da aggiornare. |
|
id_column
Necessario
|
Nome della colonna DataFrame contenente GUID di record. |
|
clear_nulls
|
Quando Valore predefinito: False
|
Eccezioni
| Tipo | Descrizione |
|---|---|
|
Se |
|
|
Se |
Esempio
Aggiornare i record con valori diversi per riga:
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")
Trasmettere la stessa modifica a tutti i record:
df = pd.DataFrame({"accountid": ["guid-1", "guid-2", "guid-3"]})
df["websiteurl"] = "https://example.com"
client.dataframe.update("account", df, id_column="accountid")
Cancellare un campo impostando clear_nulls=True:
df = pd.DataFrame([{"accountid": "guid-1", "websiteurl": None}])
client.dataframe.update("account", df, id_column="accountid", clear_nulls=True)