DataFrameOperations Classe
Espace de noms pour les opérations CRUD de trame de données pandas.
Accessible via client.dataframe. Fournit des wrappers orientés DataFrame autour des opérations CRUD au niveau de l’enregistrement.
Exemple :
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"])
Constructeur
DataFrameOperations(client: DataverseClient)
Paramètres
| Nom | Description |
|---|---|
|
client
Obligatoire
|
Instance parente DataverseClient . |
Méthodes
| create |
Créez des enregistrements à partir d’un DataFrame pandas. Tip Toutes les lignes sont envoyées dans une seule requête CreateMultiple. Pour très Grands DataFrames, envisagez de fractionner en lots plus petits pour éviter délai d’expiration de la requête. |
| delete |
Supprimez les enregistrements en passant une série pandas de GUID. |
| get |
Récupérez des enregistrements et retournez en tant que DataFrame pandas unique. Quand Tip Pour les tables volumineuses, utilisez le haut ou le filtre pour limiter le jeu de résultats. |
| sql |
Exécutez une requête SQL et retournez les résultats sous forme de DataFrame pandas. Délégués vers sql et convertit la liste des enregistrements en un seul DataFrame. |
| update |
Mettez à jour les enregistrements à partir d’un DataFrame pandas. Chaque ligne du DataFrame représente une mise à jour. Spécifie Tip Toutes les lignes sont envoyées dans une seule requête UpdateMultiple (ou patch unique pour une ligne). Pour les dataFrames très volumineux, envisagez fractionnement en lots plus petits pour éviter les délais d’expiration des demandes. |
create
Créez des enregistrements à partir d’un DataFrame pandas.
Tip
Toutes les lignes sont envoyées dans une seule requête CreateMultiple. Pour très
Grands DataFrames, envisagez de fractionner en lots plus petits pour éviter
délai d’expiration de la requête.
create(table: str, records: DataFrame) -> Series
Paramètres
| Nom | Description |
|---|---|
|
table
Obligatoire
|
Nom du schéma de la table (par exemple |
|
records
Obligatoire
|
DataFrame où chaque ligne est un enregistrement à créer. |
Retours
| Type | Description |
|---|---|
|
Série de GUID d’enregistrement créés, alignés avec l’index DataFrame d’entrée. |
Exceptions
| Type | Description |
|---|---|
|
Si |
|
|
S’il |
Exemples
Créez des enregistrements à partir d’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
Supprimez les enregistrements en passant une série pandas de GUID.
delete(table: str, ids: Series, use_bulk_delete: bool = True) -> str | None
Paramètres
| Nom | Description |
|---|---|
|
table
Obligatoire
|
Nom du schéma de la table (par exemple |
|
ids
Obligatoire
|
Série de GUID d’enregistrement à supprimer. |
|
use_bulk_delete
|
Quand Valeur par défaut: True
|
Retours
| Type | Description |
|---|---|
|
str,
|
ID de travail BulkDelete lors de la suppression de plusieurs enregistrements via BulkDelete ; |
Exceptions
| Type | Description |
|---|---|
|
S’il |
|
|
Si |
Exemples
Supprimez les enregistrements à l’aide d’une série :
import pandas as pd
ids = pd.Series(["guid-1", "guid-2", "guid-3"])
client.dataframe.delete("account", ids)
get
Récupérez des enregistrements et retournez en tant que DataFrame pandas unique.
Quand record_id elle est fournie, retourne un DataFrame à une seule ligne.
Lorsqu’il record_id s’agit de None, itère en interne toutes les pages et retourne un DataFrame consolidé.
Tip
Pour les tables volumineuses, utilisez le haut ou le filtre pour limiter le jeu de résultats.
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ètres
| Nom | Description |
|---|---|
|
table
Obligatoire
|
Nom du schéma de la table (par exemple |
|
record_id
|
GUID facultatif pour extraire un enregistrement spécifique. Si ce n’est pas le cas, interroge plusieurs enregistrements. Valeur par défaut: None
|
|
select
|
Liste facultative des noms logiques d’attribut à récupérer. Valeur par défaut: None
|
|
filter
|
Chaîne de filtre OData facultative. Les noms de colonnes doivent utiliser des noms logiques minuscules exacts. Valeur par défaut: None
|
|
orderby
|
Liste facultative d’attributs à trier. Valeur par défaut: None
|
|
top
|
Nombre maximal facultatif d’enregistrements à retourner. Valeur par défaut: None
|
|
expand
|
Liste facultative des propriétés de navigation à développer (respectant la casse). Valeur par défaut: None
|
|
page_size
|
Nombre facultatif d’enregistrements par page pour la pagination. Valeur par défaut: None
|
|
count
|
Si Valeur par défaut: False
|
|
include_annotations
|
Modèle d’annotation OData pour l’en-tête Valeur par défaut: None
|
Retours
| Type | Description |
|---|---|
|
DataFrame contenant tous les enregistrements correspondants. Retourne un DataFrame vide lorsqu’aucun enregistrement ne correspond. |
Exceptions
| Type | Description |
|---|---|
|
S’il |
Exemples
Récupérez un enregistrement unique en tant que DataFrame :
df = client.dataframe.get("account", record_id=account_id, select=["name", "telephone1"])
print(df)
Requête avec filtrage :
df = client.dataframe.get("account", filter="statecode eq 0", select=["name"])
print(f"Got {len(df)} active accounts")
Limitez la taille des résultats :
df = client.dataframe.get("account", select=["name"], top=100)
sql
Exécutez une requête SQL et retournez les résultats sous forme de DataFrame pandas.
Délégués vers sql et convertit la liste des enregistrements en un seul DataFrame.
sql(sql: str) -> DataFrame
Paramètres
| Nom | Description |
|---|---|
|
sql
Obligatoire
|
Instruction SQL SELECT prise en charge. |
Retours
| Type | Description |
|---|---|
|
DataFrame contenant toutes les lignes de résultat. Retourne un DataFrame vide lorsqu’aucune ligne ne correspond. |
Exceptions
| Type | Description |
|---|---|
|
S’il |
Exemples
Requête SQL vers 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())
Agréger la requête vers 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
Mettez à jour les enregistrements à partir d’un DataFrame pandas.
Chaque ligne du DataFrame représente une mise à jour. Spécifie id_column quelle colonne contient les GUID d’enregistrement.
Tip
Toutes les lignes sont envoyées dans une seule requête UpdateMultiple (ou
patch unique pour une ligne). Pour les dataFrames très volumineux, envisagez
fractionnement en lots plus petits pour éviter les délais d’expiration des demandes.
update(table: str, changes: DataFrame, id_column: str, clear_nulls: bool = False) -> None
Paramètres
| Nom | Description |
|---|---|
|
table
Obligatoire
|
Nom du schéma de la table (par exemple |
|
changes
Obligatoire
|
DataFrame où chaque ligne contient un GUID d’enregistrement et les champs à mettre à jour. |
|
id_column
Obligatoire
|
Nom de la colonne DataFrame contenant des GUID d’enregistrement. |
|
clear_nulls
|
Lorsque Valeur par défaut: False
|
Exceptions
| Type | Description |
|---|---|
|
Si |
|
|
S’il |
Exemples
Mettez à jour les enregistrements avec différentes valeurs par ligne :
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")
Diffusez la même modification sur tous les enregistrements :
df = pd.DataFrame({"accountid": ["guid-1", "guid-2", "guid-3"]})
df["websiteurl"] = "https://example.com"
client.dataframe.update("account", df, id_column="accountid")
Effacez un champ en définissant clear_nulls=True :
df = pd.DataFrame([{"accountid": "guid-1", "websiteurl": None}])
client.dataframe.update("account", df, id_column="accountid", clear_nulls=True)