TableOperations Classe
Namespace para operações de metadados no nível da tabela.
Acessado por .client.tables Fornece operações para criar, excluir, inspecionar e listar tabelas do Dataverse, bem como adicionar e remover colunas.
Exemplo:
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")
Construtor
TableOperations(client: DataverseClient)
Parâmetros
| Nome | Description |
|---|---|
|
client
Obrigatório
|
A instância pai DataverseClient . |
Métodos
| add_columns |
Adicione uma ou mais colunas a uma tabela existente. Exemplo:
|
| create |
Crie uma tabela personalizada com as colunas especificadas. |
| create_lookup_field |
Crie uma relação de campo de pesquisa simples. Esse é um método de conveniência que encapsula create_one_to_many_relationship o caso comum de adicionar um campo de pesquisa a uma tabela existente. |
| create_many_to_many_relationship |
Crie uma relação muitos para muitos entre tabelas. Essa operação cria uma relação muitos para muitos e uma tabela intersect para gerenciar a relação. |
| create_one_to_many_relationship |
Crie uma relação um-para-muitos entre tabelas. Essa operação cria a relação e o atributo de pesquisa na tabela de referência. |
| delete |
Exclua uma tabela personalizada por nome de esquema. Aviso Esta operação é irreversível e excluirá todos os registros no tabela junto com a definição da tabela. Exemplo:
|
| delete_relationship |
Exclua uma relação por sua ID de metadados. Aviso Excluir uma relação também remove o atributo de pesquisa associado para relações um-para-muitos. essa operação é irreversível. Exemplo:
|
| get |
Obtenha metadados básicos para uma tabela se ela existir. Exemplo:
|
| get_relationship |
Recuperar metadados de relação por nome de esquema. Exemplo:
|
| list |
Liste todas as tabelas não privadas no ambiente do Dataverse. Por padrão, retorna todas as tabelas em que Exemplo:
|
| remove_columns |
Remova uma ou mais colunas de uma tabela. Exemplo:
|
add_columns
Adicione uma ou mais colunas a uma tabela existente.
Exemplo:
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]
Parâmetros
| Nome | Description |
|---|---|
|
table
Obrigatório
|
Nome do esquema da tabela (por exemplo |
|
columns
Obrigatório
|
Mapeamento de nomes de esquema de coluna (com prefixo de personalização) para seus tipos. Os tipos com suporte são os mesmos que para create. |
Retornos
| Tipo | Description |
|---|---|
|
Nomes de esquema das colunas que foram criadas. |
Exceções
| Tipo | Description |
|---|---|
|
Se a tabela não existir. |
create
Crie uma tabela personalizada com as colunas especificadas.
create(table: str, columns: Dict[str, Any], *, solution: str | None = None, primary_column: str | None = None) -> Dict[str, Any]
Parâmetros
| Nome | Description |
|---|---|
|
table
Obrigatório
|
Nome do esquema da tabela com prefixo de personalização (por exemplo |
|
columns
Obrigatório
|
Mapeamento de nomes de esquema de coluna (com prefixo de personalização) para seus tipos. Os tipos com suporte incluem |
|
solution
Obrigatório
|
Nome exclusivo da solução opcional que deve ser o proprietário da nova tabela. Quando a tabela é omitida é criada na solução padrão. |
|
primary_column
Obrigatório
|
Nome do esquema de coluna de nome primário opcional com prefixo de personalização (por exemplo |
Parâmetros somente de palavra-chave
| Nome | Description |
|---|---|
|
solution
|
Valor padrão: None
|
|
primary_column
|
Valor padrão: None
|
Retornos
| Tipo | Description |
|---|---|
|
Dicionário que contém metadados de tabela, incluindo , , , e |
Exceções
| Tipo | Description |
|---|---|
|
Se a criação da tabela falhar ou a tabela já existir. |
Exemplos
Crie uma tabela com colunas simples:
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",
)
print(f"Created: {result['table_schema_name']}")
create_lookup_field
Crie uma relação de campo de pesquisa simples.
Esse é um método de conveniência que encapsula create_one_to_many_relationship o caso comum de adicionar um campo de pesquisa a uma tabela existente.
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
Parâmetros
| Nome | Description |
|---|---|
|
referencing_table
Obrigatório
|
Nome lógico da tabela que terá o campo de pesquisa (tabela filho). |
|
lookup_field_name
Obrigatório
|
Nome do esquema para o campo de pesquisa (por exemplo, |
|
referenced_table
Obrigatório
|
Nome lógico da tabela que está sendo referenciada (tabela pai). |
|
display_name
Obrigatório
|
Nome de exibição para o campo de pesquisa. O padrão é o nome da tabela referenciada. |
|
description
Obrigatório
|
Descrição opcional para o campo de pesquisa. |
|
required
Obrigatório
|
Se a pesquisa é necessária. Usa |
|
cascade_delete
Obrigatório
|
Comportamento de exclusão ( |
|
solution
Obrigatório
|
Nome exclusivo da solução opcional ao qual adicionar a relação. |
|
language_code
Obrigatório
|
Código de idioma para rótulos. O padrão é 1033 (inglês). |
Parâmetros somente de palavra-chave
| Nome | Description |
|---|---|
|
display_name
|
Valor padrão: None
|
|
description
|
Valor padrão: None
|
|
required
|
Valor padrão: False
|
|
cascade_delete
|
Valor padrão: RemoveLink
|
|
solution
|
Valor padrão: None
|
|
language_code
|
Valor padrão: 1033
|
Retornos
| Tipo | Description |
|---|---|
|
Metadados de relação com |
Exceções
| Tipo | Description |
|---|---|
|
Se a solicitação da API Web falhar. |
Exemplos
Crie um campo de pesquisa simples:
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
Crie uma relação muitos para muitos entre tabelas.
Essa operação cria uma relação muitos para muitos e uma tabela intersect para gerenciar a relação.
create_many_to_many_relationship(relationship: ManyToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
Parâmetros
| Nome | Description |
|---|---|
|
relationship
Obrigatório
|
Metadados que definem a relação muitos para muitos. |
|
solution
Obrigatório
|
Nome exclusivo da solução opcional ao qual adicionar relação. |
Parâmetros somente de palavra-chave
| Nome | Description |
|---|---|
|
solution
|
Valor padrão: None
|
Retornos
| Tipo | Description |
|---|---|
|
Metadados de relação com |
Exceções
| Tipo | Description |
|---|---|
|
Se a solicitação da API Web falhar. |
Exemplos
Criar uma relação muitos para muitos: Funcionário <–> Projeto:
from PowerPlatform.Dataverse.models.relationship 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
Crie uma relação um-para-muitos entre tabelas.
Essa operação cria a relação e o atributo de pesquisa na tabela de referência.
create_one_to_many_relationship(lookup: LookupAttributeMetadata, relationship: OneToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
Parâmetros
| Nome | Description |
|---|---|
|
lookup
Obrigatório
|
Metadados que definem o atributo de pesquisa. |
|
relationship
Obrigatório
|
Metadados que definem a relação. |
|
solution
Obrigatório
|
Nome exclusivo da solução opcional ao qual adicionar relação. |
Parâmetros somente de palavra-chave
| Nome | Description |
|---|---|
|
solution
|
Valor padrão: None
|
Retornos
| Tipo | Description |
|---|---|
|
Metadados de relação com |
Exceções
| Tipo | Description |
|---|---|
|
Se a solicitação da API Web falhar. |
Exemplos
Criar uma relação um-para-muitos: Departamento (1) –> Funcionário (N):
from PowerPlatform.Dataverse.models.relationship 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
Exclua uma tabela personalizada por nome de esquema.
Aviso
Esta operação é irreversível e excluirá todos os registros no
tabela junto com a definição da tabela.
Exemplo:
client.tables.delete("new_MyTestTable")
delete(table: str) -> None
Parâmetros
| Nome | Description |
|---|---|
|
table
Obrigatório
|
Nome do esquema da tabela (por exemplo |
Exceções
| Tipo | Description |
|---|---|
|
Se a tabela não existir ou a exclusão falhar. |
delete_relationship
Exclua uma relação por sua ID de metadados.
Aviso
Excluir uma relação também remove o atributo de pesquisa associado
para relações um-para-muitos. essa operação é irreversível.
Exemplo:
client.tables.delete_relationship(
"12345678-1234-1234-1234-123456789abc"
)
delete_relationship(relationship_id: str) -> None
Parâmetros
| Nome | Description |
|---|---|
|
relationship_id
Obrigatório
|
O GUID dos metadados de relação. |
Exceções
| Tipo | Description |
|---|---|
|
Se a solicitação da API Web falhar. |
get
Obtenha metadados básicos para uma tabela se ela existir.
Exemplo:
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) -> Dict[str, Any] | None
Parâmetros
| Nome | Description |
|---|---|
|
table
Obrigatório
|
Nome do esquema da tabela (por exemplo, |
Retornos
| Tipo | Description |
|---|---|
|
dict,
|
Dicionário que contém |
get_relationship
Recuperar metadados de relação por nome de esquema.
Exemplo:
rel = client.tables.get_relationship("new_Department_Employee")
if rel:
print(f"Found: {rel.relationship_schema_name}")
get_relationship(schema_name: str) -> RelationshipInfo | None
Parâmetros
| Nome | Description |
|---|---|
|
schema_name
Obrigatório
|
O nome do esquema do relacionamento. |
Retornos
| Tipo | Description |
|---|---|
|
Metadados de relação ou |
Exceções
| Tipo | Description |
|---|---|
|
Se a solicitação da API Web falhar. |
list
Liste todas as tabelas não privadas no ambiente do Dataverse.
Por padrão, retorna todas as tabelas em que IsPrivate eq false. Forneça uma expressão OData $filter opcional para restringir ainda mais os resultados.
A expressão é combinada com a cláusula padrão IsPrivate eq false usando and.
Exemplo:
# 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]]
Parâmetros
| Nome | Description |
|---|---|
|
filter
Obrigatório
|
Expressão OData |
|
select
Obrigatório
|
Lista opcional de nomes de propriedades a serem incluídos na resposta (projetada por meio da opção de consulta OData |
Parâmetros somente de palavra-chave
| Nome | Description |
|---|---|
|
filter
|
Valor padrão: None
|
|
select
|
Valor padrão: None
|
Retornos
| Tipo | Description |
|---|---|
|
Lista de dicionários de metadados EntityDefinition. |
remove_columns
Remova uma ou mais colunas de uma tabela.
Exemplo:
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]
Parâmetros
| Nome | Description |
|---|---|
|
table
Obrigatório
|
Nome do esquema da tabela (por exemplo |
|
columns
Obrigatório
|
Nome do esquema de coluna ou lista de nomes de esquema de coluna a serem removidos. Deve incluir o prefixo de personalização (por exemplo |
Retornos
| Tipo | Description |
|---|---|
|
Nomes de esquema das colunas que foram removidas. |
Exceções
| Tipo | Description |
|---|---|
|
Se a tabela ou uma coluna especificada não existir. |