TableOperations Kelas
Namespace untuk operasi metadata tingkat tabel.
Diakses melalui client.tables. Menyediakan operasi untuk membuat, menghapus, memeriksa, dan mencantumkan tabel Dataverse, serta menambahkan dan menghapus kolom.
Example:
client = DataverseClient(base_url, credential)
# Create a table
info = client.tables.create(
"new_Product",
{"new_Price": "decimal", "new_InStock": "bool"},
solution="MySolution",
)
# List tables
tables = client.tables.list()
# Get table info
info = client.tables.get("new_Product")
# Add columns
client.tables.add_columns("new_Product", {"new_Rating": "int"})
# Remove columns
client.tables.remove_columns("new_Product", "new_Rating")
# Delete a table
client.tables.delete("new_Product")
Konstruktor
TableOperations(client: DataverseClient)
Parameter
| Nama | Deskripsi |
|---|---|
|
client
Diperlukan
|
Instans induk DataverseClient . |
Metode
| add_columns |
Tambahkan satu atau beberapa kolom ke tabel yang sudah ada. Example:
|
| create |
Buat tabel kustom dengan kolom yang ditentukan. |
| create_alternate_key |
Buat kunci alternatif pada tabel. Kunci alternatif memungkinkan operasi upsert mengidentifikasi rekaman oleh satu atau beberapa kolom alih-alih GUID utama. Setelah pembuatan kunci diantrekan untuk bangunan indeks; akan status beralih dari |
| create_lookup_field |
Buat hubungan bidang pencarian sederhana. Ini adalah metode kenyamanan yang membungkus create_one_to_many_relationship untuk kasus umum menambahkan bidang pencarian ke tabel yang ada. |
| create_many_to_many_relationship |
Buat hubungan banyak ke banyak antar tabel. Operasi ini membuat hubungan banyak ke banyak dan tabel irisan untuk mengelola hubungan. |
| create_one_to_many_relationship |
Buat hubungan satu-ke-banyak antar tabel. Operasi ini membuat hubungan dan atribut pencarian pada tabel referensi. |
| delete |
Hapus tabel kustom menurut nama skema. Warning Operasi ini tidak dapat diubah dan akan menghapus semua rekaman dalam tabel bersama dengan definisi tabel. Example:
|
| delete_alternate_key |
Hapus kunci alternatif dengan ID metadatanya. Warning Menghapus kunci alternatif yang digunakan oleh operasi upsert akan menyebabkan operasi tersebut gagal. Operasi ini tidak dapat dibatalkan. Example:
|
| delete_relationship |
Menghapus hubungan dengan ID metadatanya. Warning Menghapus hubungan juga menghapus atribut pencarian terkait untuk hubungan satu-ke-banyak. Operasi ini tidak dapat dibatalkan. Example:
|
| get |
Dapatkan metadata dasar untuk tabel jika ada. Example:
|
| get_alternate_keys |
Mencantumkan semua kunci alternatif yang ditentukan pada tabel. |
| get_relationship |
Ambil metadata hubungan menurut nama skema. Example:
|
| list |
Mencantumkan semua tabel non-privat di lingkungan Dataverse. Secara default mengembalikan setiap tabel di mana Example:
|
| list_columns |
Mencantumkan semua definisi atribut (kolom) untuk tabel. Example:
|
| list_relationships |
Mencantumkan semua definisi hubungan di lingkungan. Example:
|
| list_table_relationships |
Mencantumkan semua hubungan untuk tabel tertentu. Menggabungkan hubungan satu-ke-banyak, banyak-ke-satu, dan banyak-ke-banyak untuk tabel yang diberikan dengan mengkueri Example:
|
| remove_columns |
Hapus satu atau beberapa kolom dari tabel. Example:
|
add_columns
Tambahkan satu atau beberapa kolom ke tabel yang sudah ada.
Example:
created = client.tables.add_columns(
"new_MyTestTable",
{"new_Notes": "string", "new_Active": "bool"},
)
print(created) # ['new_Notes', 'new_Active']
add_columns(table: str, columns: Dict[str, Any]) -> List[str]
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
|
columns
Diperlukan
|
Pemetaan nama skema kolom (dengan awalan kustomisasi) ke jenisnya. Jenis yang didukung sama dengan untuk create. |
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Nama skema kolom yang dibuat. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel tidak ada. |
create
Buat tabel kustom dengan kolom yang ditentukan.
create(table: str, columns: Dict[str, Any], *, solution: str | None = None, primary_column: str | None = None, display_name: str | None = None) -> TableInfo
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel dengan awalan kustomisasi (misalnya |
|
columns
Diperlukan
|
Pemetaan nama skema kolom (dengan awalan kustomisasi) ke jenisnya. Jenis yang didukung termasuk |
|
solution
Diperlukan
|
Nama unik solusi opsional yang harus memiliki tabel baru. Saat dihilangkan, tabel dibuat dalam solusi default. |
|
primary_column
Diperlukan
|
Nama skema kolom nama utama opsional dengan awalan kustomisasi (misalnya |
|
display_name
Diperlukan
|
Nama tampilan yang dapat dibaca manusia untuk tabel (misalnya |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
solution
|
Nilai default: None
|
|
primary_column
|
Nilai default: None
|
|
display_name
|
Nilai default: None
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Metadata tabel dengan |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika pembuatan tabel gagal atau tabel sudah ada. |
Contoh
Buat tabel dengan kolom sederhana:
from enum import IntEnum
class ItemStatus(IntEnum):
ACTIVE = 1
INACTIVE = 2
result = client.tables.create(
"new_Product",
{
"new_Title": "string",
"new_Price": "decimal",
"new_Status": ItemStatus,
},
solution="MySolution",
primary_column="new_ProductName",
display_name="Product",
)
print(f"Created: {result['table_schema_name']}")
create_alternate_key
Buat kunci alternatif pada tabel.
Kunci alternatif memungkinkan operasi upsert mengidentifikasi rekaman oleh satu atau beberapa kolom alih-alih GUID utama. Setelah pembuatan kunci diantrekan untuk bangunan indeks; akan status beralih dari "Pending" ke "Active" setelah indeks siap.
create_alternate_key(table: str, key_name: str, columns: List[str], *, display_name: str | None = None, language_code: int = 1033) -> AlternateKeyInfo
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
|
key_name
Diperlukan
|
Nama skema untuk kunci alternatif baru (misalnya |
|
columns
Diperlukan
|
Daftar nama logis kolom yang menyusun kunci (misalnya |
|
display_name
Diperlukan
|
Nama tampilan untuk kunci. Default ke |
|
language_code
Diperlukan
|
Kode bahasa untuk label. Default ke 1033 (Bahasa Inggris). |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
display_name
|
Nilai default: None
|
|
language_code
|
Nilai default: 1033
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Metadata untuk kunci alternatif yang baru dibuat. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel tidak ada. |
|
|
Jika permintaan API Web gagal. |
Contoh
Buat kunci alternatif kolom tunggal untuk upsert:
key = client.tables.create_alternate_key(
"new_Product",
"new_product_code_key",
["new_productcode"],
display_name="Product Code",
)
print(f"Key ID: {key.metadata_id}")
print(f"Columns: {key.key_attributes}")
create_lookup_field
Buat hubungan bidang pencarian sederhana.
Ini adalah metode kenyamanan yang membungkus create_one_to_many_relationship untuk kasus umum menambahkan bidang pencarian ke tabel yang ada.
create_lookup_field(referencing_table: str, lookup_field_name: str, referenced_table: str, *, display_name: str | None = None, description: str | None = None, required: bool = False, cascade_delete: str = 'RemoveLink', solution: str | None = None, language_code: int = 1033) -> RelationshipInfo
Parameter
| Nama | Deskripsi |
|---|---|
|
referencing_table
Diperlukan
|
Nama logis tabel yang akan memiliki bidang pencarian (tabel anak). |
|
lookup_field_name
Diperlukan
|
Nama skema untuk bidang pencarian (misalnya, |
|
referenced_table
Diperlukan
|
Nama logis tabel yang sedang dirujuk (tabel induk). |
|
display_name
Diperlukan
|
Nama tampilan untuk bidang pencarian. Default ke nama tabel yang dirujuk. |
|
description
Diperlukan
|
Deskripsi opsional untuk bidang pencarian. |
|
required
Diperlukan
|
Apakah pencarian diperlukan. Secara default menjadi |
|
cascade_delete
Diperlukan
|
Hapus perilaku ( |
|
solution
Diperlukan
|
Nama unik solusi opsional untuk menambahkan hubungan. |
|
language_code
Diperlukan
|
Kode bahasa untuk label. Default ke 1033 (Bahasa Inggris). |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
display_name
|
Nilai default: None
|
|
description
|
Nilai default: None
|
|
required
|
Nilai default: False
|
|
cascade_delete
|
Nilai default: RemoveLink
|
|
solution
|
Nilai default: None
|
|
language_code
|
Nilai default: 1033
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Metadata hubungan dengan |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika permintaan API Web gagal. |
Contoh
Buat bidang pencarian sederhana:
result = client.tables.create_lookup_field(
referencing_table="new_order",
lookup_field_name="new_AccountId",
referenced_table="account",
display_name="Account",
required=True,
cascade_delete=CASCADE_BEHAVIOR_REMOVE_LINK,
)
print(f"Created lookup: {result.lookup_schema_name}")
create_many_to_many_relationship
Buat hubungan banyak ke banyak antar tabel.
Operasi ini membuat hubungan banyak ke banyak dan tabel irisan untuk mengelola hubungan.
create_many_to_many_relationship(relationship: ManyToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
Parameter
| Nama | Deskripsi |
|---|---|
|
relationship
Diperlukan
|
Metadata yang menentukan hubungan banyak-ke-banyak. |
|
solution
Diperlukan
|
Nama unik solusi opsional untuk menambahkan hubungan. |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
solution
|
Nilai default: None
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Metadata hubungan dengan |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika permintaan API Web gagal. |
Contoh
Buat hubungan banyak ke banyak: Karyawan <-> Proyek:
from PowerPlatform.Dataverse.models import (
ManyToManyRelationshipMetadata,
)
relationship = ManyToManyRelationshipMetadata(
schema_name="new_employee_project",
entity1_logical_name="new_employee",
entity2_logical_name="new_project",
)
result = client.tables.create_many_to_many_relationship(relationship)
print(f"Created: {result.relationship_schema_name}")
create_one_to_many_relationship
Buat hubungan satu-ke-banyak antar tabel.
Operasi ini membuat hubungan dan atribut pencarian pada tabel referensi.
create_one_to_many_relationship(lookup: LookupAttributeMetadata, relationship: OneToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
Parameter
| Nama | Deskripsi |
|---|---|
|
lookup
Diperlukan
|
Metadata yang menentukan atribut pencarian. |
|
relationship
Diperlukan
|
Metadata yang menentukan hubungan. |
|
solution
Diperlukan
|
Nama unik solusi opsional untuk menambahkan hubungan. |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
solution
|
Nilai default: None
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Metadata hubungan dengan |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika permintaan API Web gagal. |
Contoh
Buat hubungan satu-ke-banyak: Departemen (1) -> Karyawan (N):
from PowerPlatform.Dataverse.models import (
LookupAttributeMetadata,
OneToManyRelationshipMetadata,
Label,
LocalizedLabel,
CascadeConfiguration,
)
from PowerPlatform.Dataverse.common.constants import (
CASCADE_BEHAVIOR_REMOVE_LINK,
)
lookup = LookupAttributeMetadata(
schema_name="new_DepartmentId",
display_name=Label(
localized_labels=[
LocalizedLabel(label="Department", language_code=1033)
]
),
)
relationship = OneToManyRelationshipMetadata(
schema_name="new_Department_Employee",
referenced_entity="new_department",
referencing_entity="new_employee",
referenced_attribute="new_departmentid",
cascade_configuration=CascadeConfiguration(
delete=CASCADE_BEHAVIOR_REMOVE_LINK,
),
)
result = client.tables.create_one_to_many_relationship(lookup, relationship)
print(f"Created lookup field: {result.lookup_schema_name}")
delete
Hapus tabel kustom menurut nama skema.
Warning
Operasi ini tidak dapat diubah dan akan menghapus semua rekaman dalam
tabel bersama dengan definisi tabel.
Example:
client.tables.delete("new_MyTestTable")
delete(table: str) -> None
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel tidak ada atau penghapusan gagal. |
delete_alternate_key
Hapus kunci alternatif dengan ID metadatanya.
Warning
Menghapus kunci alternatif yang digunakan oleh operasi upsert akan
menyebabkan operasi tersebut gagal. Operasi ini tidak dapat dibatalkan.
Example:
client.tables.delete_alternate_key(
"new_Product",
"12345678-1234-1234-1234-123456789abc",
)
delete_alternate_key(table: str, key_id: str) -> None
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
|
key_id
Diperlukan
|
GUID metadata kunci alternatif untuk dihapus. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel tidak ada. |
|
|
Jika permintaan API Web gagal. |
delete_relationship
Menghapus hubungan dengan ID metadatanya.
Warning
Menghapus hubungan juga menghapus atribut pencarian terkait
untuk hubungan satu-ke-banyak. Operasi ini tidak dapat dibatalkan.
Example:
client.tables.delete_relationship(
"12345678-1234-1234-1234-123456789abc"
)
delete_relationship(relationship_id: str) -> None
Parameter
| Nama | Deskripsi |
|---|---|
|
relationship_id
Diperlukan
|
GUID metadata hubungan. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika permintaan API Web gagal. |
get
Dapatkan metadata dasar untuk tabel jika ada.
Example:
info = client.tables.get("new_MyTestTable")
if info:
print(f"Logical name: {info['table_logical_name']}")
print(f"Entity set: {info['entity_set_name']}")
get(table: str) -> TableInfo | None
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Metadata tabel, atau |
get_alternate_keys
Mencantumkan semua kunci alternatif yang ditentukan pada tabel.
get_alternate_keys(table: str) -> List[AlternateKeyInfo]
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Daftar objek metadata kunci alternatif. Mungkin kosong jika tidak ada kunci alternatif yang ditentukan. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel tidak ada. |
|
|
Jika permintaan API Web gagal. |
Contoh
Cantumkan kunci alternatif dan cetak statusnya:
keys = client.tables.get_alternate_keys("new_Product")
for key in keys:
print(f"{key.schema_name}: {key.status}")
get_relationship
Ambil metadata hubungan menurut nama skema.
Example:
rel = client.tables.get_relationship("new_Department_Employee")
if rel:
print(f"Found: {rel.relationship_schema_name}")
get_relationship(schema_name: str) -> RelationshipInfo | None
Parameter
| Nama | Deskripsi |
|---|---|
|
schema_name
Diperlukan
|
Nama skema hubungan. |
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Metadata hubungan, atau |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika permintaan API Web gagal. |
list
Mencantumkan semua tabel non-privat di lingkungan Dataverse.
Secara default mengembalikan setiap tabel di mana IsPrivate eq false. Berikan ekspresi OData $filter opsional untuk mempersempit hasil lebih lanjut.
Ekspresi dikombinasikan dengan klausa default IsPrivate eq false menggunakan and.
Example:
# List all non-private tables
tables = client.tables.list()
for table in tables:
print(table["LogicalName"])
# List only tables whose schema name starts with "new_"
custom_tables = client.tables.list(
filter="startswith(SchemaName, 'new_')"
)
# List tables with only specific properties
tables = client.tables.list(
select=["LogicalName", "SchemaName", "EntitySetName"]
)
list(*, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
Parameter
| Nama | Deskripsi |
|---|---|
|
filter
Diperlukan
|
Ekspresi OData |
|
select
Diperlukan
|
Daftar opsional nama properti untuk disertakan dalam respons (diproyeksikan melalui opsi kueri OData |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
filter
|
Nilai default: None
|
|
select
|
Nilai default: None
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Daftar kamus metadata EntityDefinition. |
list_columns
Mencantumkan semua definisi atribut (kolom) untuk tabel.
Example:
# List all columns on the account table
columns = client.tables.list_columns("account")
for col in columns:
print(f"{col['LogicalName']} ({col.get('AttributeType')})")
# List only specific properties
columns = client.tables.list_columns(
"account",
select=["LogicalName", "SchemaName", "AttributeType"],
)
# Filter to only string attributes
columns = client.tables.list_columns(
"account",
filter="AttributeType eq 'String'",
)
list_columns(table: str, *, select: List[str] | None = None, filter: str | None = None) -> List[Dict[str, Any]]
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
|
select
Diperlukan
|
Daftar opsional nama properti untuk diproyeksikan melalui |
|
filter
Diperlukan
|
Ekspresi OData |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
select
|
Nilai default: None
|
|
filter
|
Nilai default: None
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Daftar kamus metadata atribut mentah. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel tidak ditemukan. |
|
|
Jika permintaan API Web gagal. |
list_relationships
Mencantumkan semua definisi hubungan di lingkungan.
Example:
# List all relationships
rels = client.tables.list_relationships()
for rel in rels:
print(f"{rel['SchemaName']} ({rel.get('@odata.type')})")
# Filter by type
one_to_many = client.tables.list_relationships(
filter="RelationshipType eq Microsoft.Dynamics.CRM.RelationshipType'OneToManyRelationship'"
)
# Select specific properties
rels = client.tables.list_relationships(
select=["SchemaName", "ReferencedEntity", "ReferencingEntity"]
)
list_relationships(*, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
Parameter
| Nama | Deskripsi |
|---|---|
|
filter
Diperlukan
|
Ekspresi OData |
|
select
Diperlukan
|
Daftar opsional nama properti untuk diproyeksikan melalui |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
filter
|
Nilai default: None
|
|
select
|
Nilai default: None
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Daftar kamus metadata hubungan mentah. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika permintaan API Web gagal. |
list_table_relationships
Mencantumkan semua hubungan untuk tabel tertentu.
Menggabungkan hubungan satu-ke-banyak, banyak-ke-satu, dan banyak-ke-banyak untuk tabel yang diberikan dengan mengkueri EntityDefinitions({id})/OneToManyRelationships, EntityDefinitions({id})/ManyToOneRelationships, dan EntityDefinitions({id})/ManyToManyRelationships.
Example:
# List all relationships for the account table
rels = client.tables.list_table_relationships("account")
for rel in rels:
print(f"{rel['SchemaName']} -> {rel.get('@odata.type')}")
list_table_relationships(table: str, *, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
|
filter
Diperlukan
|
Ekspresi OData |
|
select
Diperlukan
|
Daftar opsional nama properti untuk diproyeksikan melalui |
Parameter Kata Kunci-Saja
| Nama | Deskripsi |
|---|---|
|
filter
|
Nilai default: None
|
|
select
|
Nilai default: None
|
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Daftar gabungan kamus metadata hubungan satu-ke-banyak, banyak-ke-satu, dan banyak-ke-banyak. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel tidak ditemukan. |
|
|
Jika permintaan API Web gagal. |
remove_columns
Hapus satu atau beberapa kolom dari tabel.
Example:
removed = client.tables.remove_columns(
"new_MyTestTable",
["new_Notes", "new_Active"],
)
print(removed) # ['new_Notes', 'new_Active']
remove_columns(table: str, columns: str | List[str]) -> List[str]
Parameter
| Nama | Deskripsi |
|---|---|
|
table
Diperlukan
|
Nama skema tabel (misalnya |
|
columns
Diperlukan
|
Nama skema kolom atau daftar nama skema kolom yang akan dihapus. Harus menyertakan awalan penyesuaian (misalnya |
Mengembalikan
| Jenis | Deskripsi |
|---|---|
|
Nama skema kolom yang dihapus. |
Pengecualian
| Jenis | Deskripsi |
|---|---|
|
Jika tabel atau kolom tertentu tidak ada. |