DataFrameOperations Klasa
Przestrzeń nazw dla operacji CRUD ramki danych pandas.
Dostęp jest uzyskiwany za pośrednictwem client.dataframe. Udostępnia otoki zorientowane na ramki danych wokół operacji CRUD na poziomie rekordu.
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)
Parametry
| Nazwa | Opis |
|---|---|
|
client
Wymagane
|
Wystąpienie nadrzędne DataverseClient . |
Metody
| create |
Tworzenie rekordów na podstawie ramki danych biblioteki pandas. Wskazówka Wszystkie wiersze są wysyłane w jednym żądaniu CreateMultiple. Dla bardzo duże ramki danych, rozważ podzielenie na mniejsze partie, aby uniknąć limity czasu żądania. |
| delete |
Usuń rekordy, przekazując serię identyfikatorów GUID biblioteki pandas. |
| get |
Pobieranie rekordów i zwracanie ich jako pojedynczej ramki danych biblioteki pandas. Gdy Wskazówka W przypadku dużych tabel użyj górnej lub filtru, aby ograniczyć zestaw wyników. |
| sql |
Wykonaj zapytanie SQL i zwróć wyniki jako ramkę danych biblioteki pandas. Delegaci do sql i konwertują listę rekordów na jedną ramkę danych. |
| update |
Aktualizowanie rekordów z ramki danych biblioteki pandas. Każdy wiersz w ramce danych reprezentuje aktualizację. Określa, która kolumna Wskazówka Wszystkie wiersze są wysyłane w jednym żądaniu UpdateMultiple (lub pojedyncza poprawka dla jednego wiersza). W przypadku bardzo dużych ramek danych należy wziąć pod uwagę dzielenie na mniejsze partie, aby uniknąć przekroczenia limitu czasu żądania. |
create
Tworzenie rekordów na podstawie ramki danych biblioteki pandas.
Wskazówka
Wszystkie wiersze są wysyłane w jednym żądaniu CreateMultiple. Dla bardzo
duże ramki danych, rozważ podzielenie na mniejsze partie, aby uniknąć
limity czasu żądania.
create(table: str, records: DataFrame) -> Series
Parametry
| Nazwa | Opis |
|---|---|
|
table
Wymagane
|
Nazwa schematu tabeli (np. |
|
records
Wymagane
|
Ramka danych, w której każdy wiersz jest rekordem do utworzenia. |
Zwraca
| Typ | Opis |
|---|---|
|
Seria utworzonych identyfikatorów GUID rekordów dopasowanych do wejściowego indeksu ramki danych. |
Wyjątki
| Typ | Opis |
|---|---|
|
Jeśli |
|
|
Jeśli |
Przykłady
Tworzenie rekordów na podstawie ramki danych:
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
Usuń rekordy, przekazując serię identyfikatorów GUID biblioteki pandas.
delete(table: str, ids: Series, use_bulk_delete: bool = True) -> str | None
Parametry
| Nazwa | Opis |
|---|---|
|
table
Wymagane
|
Nazwa schematu tabeli (np. |
|
ids
Wymagane
|
Seria identyfikatorów GUID rekordów do usunięcia. |
|
use_bulk_delete
|
Gdy Domyślna wartość: True
|
Zwraca
| Typ | Opis |
|---|---|
|
str,
|
Identyfikator zadania BulkDelete podczas usuwania wielu rekordów za pośrednictwem metody BulkDelete; |
Wyjątki
| Typ | Opis |
|---|---|
|
Jeśli |
|
|
Jeśli |
Przykłady
Usuwanie rekordów przy użyciu serii:
import pandas as pd
ids = pd.Series(["guid-1", "guid-2", "guid-3"])
client.dataframe.delete("account", ids)
get
Pobieranie rekordów i zwracanie ich jako pojedynczej ramki danych biblioteki pandas.
Gdy record_id zostanie podana, zwraca ramkę danych z jednym wierszem.
Gdy record_id ma wartość None, wewnętrznie iteruje wszystkie strony i zwraca jedną skonsolidowaną ramkę danych.
Wskazówka
W przypadku dużych tabel użyj górnej lub filtru, aby ograniczyć zestaw wyników.
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
Parametry
| Nazwa | Opis |
|---|---|
|
table
Wymagane
|
Nazwa schematu tabeli (np. |
|
record_id
|
Opcjonalny identyfikator GUID do pobrania określonego rekordu. Jeśli brak, wysyła zapytania o wiele rekordów. Domyślna wartość: None
|
|
select
|
Opcjonalna lista nazw logicznych atrybutów do pobrania. Domyślna wartość: None
|
|
filter
|
Opcjonalny ciąg filtru OData. Nazwy kolumn muszą używać dokładnych małych liter logicznych. Domyślna wartość: None
|
|
orderby
|
Opcjonalna lista atrybutów do sortowania według. Domyślna wartość: None
|
|
top
|
Opcjonalna maksymalna liczba rekordów do zwrócenia. Domyślna wartość: None
|
|
expand
|
Opcjonalna lista właściwości nawigacji do rozwinięcia (uwzględniana wielkość liter). Domyślna wartość: None
|
|
page_size
|
Opcjonalna liczba rekordów na stronę na potrzeby stronicowania. Domyślna wartość: None
|
|
count
|
Jeśli Domyślna wartość: False
|
|
include_annotations
|
Wzorzec adnotacji OData dla nagłówka Domyślna wartość: None
|
Zwraca
| Typ | Opis |
|---|---|
|
Ramka danych zawierająca wszystkie pasujące rekordy. Zwraca pustą ramkę danych, gdy rekordy nie są zgodne. |
Wyjątki
| Typ | Opis |
|---|---|
|
Jeśli |
Przykłady
Pobieranie pojedynczego rekordu jako ramki danych:
df = client.dataframe.get("account", record_id=account_id, select=["name", "telephone1"])
print(df)
Zapytanie z filtrowaniem:
df = client.dataframe.get("account", filter="statecode eq 0", select=["name"])
print(f"Got {len(df)} active accounts")
Ogranicz rozmiar wyniku:
df = client.dataframe.get("account", select=["name"], top=100)
sql
Wykonaj zapytanie SQL i zwróć wyniki jako ramkę danych biblioteki pandas.
Delegaci do sql i konwertują listę rekordów na jedną ramkę danych.
sql(sql: str) -> DataFrame
Parametry
| Nazwa | Opis |
|---|---|
|
sql
Wymagane
|
Obsługiwana instrukcja SQL SELECT. |
Zwraca
| Typ | Opis |
|---|---|
|
Ramka danych zawierająca wszystkie wiersze wyników. Zwraca pustą ramkę danych, gdy wiersze nie są zgodne. |
Wyjątki
| Typ | Opis |
|---|---|
|
Jeśli |
Przykłady
Zapytanie SQL do ramki danych:
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())
Agregowanie zapytania do ramki danych:
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
Aktualizowanie rekordów z ramki danych biblioteki pandas.
Każdy wiersz w ramce danych reprezentuje aktualizację. Określa, która kolumna id_column zawiera identyfikatory GUID rekordu.
Wskazówka
Wszystkie wiersze są wysyłane w jednym żądaniu UpdateMultiple (lub
pojedyncza poprawka dla jednego wiersza). W przypadku bardzo dużych ramek danych należy wziąć pod uwagę
dzielenie na mniejsze partie, aby uniknąć przekroczenia limitu czasu żądania.
update(table: str, changes: DataFrame, id_column: str, clear_nulls: bool = False) -> None
Parametry
| Nazwa | Opis |
|---|---|
|
table
Wymagane
|
Nazwa schematu tabeli (np. |
|
changes
Wymagane
|
Ramka danych, w której każdy wiersz zawiera identyfikator GUID rekordu i pola do zaktualizowania. |
|
id_column
Wymagane
|
Nazwa kolumny DataFrame zawierającej identyfikatory GUID rekordów. |
|
clear_nulls
|
Gdy Domyślna wartość: False
|
Wyjątki
| Typ | Opis |
|---|---|
|
Jeśli |
|
|
Jeśli |
Przykłady
Aktualizuj rekordy przy użyciu różnych wartości w wierszu:
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")
Rozgłaś tę samą zmianę dla wszystkich rekordów:
df = pd.DataFrame({"accountid": ["guid-1", "guid-2", "guid-3"]})
df["websiteurl"] = "https://example.com"
client.dataframe.update("account", df, id_column="accountid")
Wyczyść pole, ustawiając clear_nulls=True:
df = pd.DataFrame([{"accountid": "guid-1", "websiteurl": None}])
client.dataframe.update("account", df, id_column="accountid", clear_nulls=True)