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:


   created = client.tables.add_columns(
       "new_MyTestTable",
       {"new_Notes": "string", "new_Active": "bool"},
   )
   print(created)  # ['new_Notes', 'new_Active']
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:


   client.tables.delete("new_MyTestTable")
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"
   )
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_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}")
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"]
   )
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']

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
str

Nome do esquema da tabela (por exemplo "new_MyTestTable").

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
list of str

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
str

Nome do esquema da tabela com prefixo de personalização (por exemplo "new_MyTestTable").

columns
Obrigatório

Mapeamento de nomes de esquema de coluna (com prefixo de personalização) para seus tipos. Os tipos com suporte incluem "string" (ou "text"), "int" (ou "integer"), "decimal" (ou "money"), "float" (ou "double"), "datetime" (ou "date"), "bool" (ou "boolean"), Enum"file"e subclasses (para conjuntos de opções locais).

solution
Obrigatório
str

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
str

Nome do esquema de coluna de nome primário opcional com prefixo de personalização (por exemplo "new_ProductName"). Se não for fornecido, o padrão será "{prefix}_Name".

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 table_schema_nameentity_set_name. table_logical_namemetadata_idcolumns_created

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
str

Nome lógico da tabela que terá o campo de pesquisa (tabela filho).

lookup_field_name
Obrigatório
str

Nome do esquema para o campo de pesquisa (por exemplo, "new_AccountId").

referenced_table
Obrigatório
str

Nome lógico da tabela que está sendo referenciada (tabela pai).

display_name
Obrigatório
str

Nome de exibição para o campo de pesquisa. O padrão é o nome da tabela referenciada.

description
Obrigatório
str

Descrição opcional para o campo de pesquisa.

required
Obrigatório

Se a pesquisa é necessária. Usa False como padrão.

cascade_delete
Obrigatório
str

Comportamento de exclusão ("RemoveLink", "Cascade", "Restrict"). Usa "RemoveLink" como padrão.

solution
Obrigatório
str

Nome exclusivo da solução opcional ao qual adicionar a relação.

language_code
Obrigatório
int

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 relationship_id, relationship_schema_name, , relationship_type, lookup_schema_name, referenced_entitye referencing_entity.

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
str

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 relationship_id, , , relationship_typee entity2_logical_nameentity1_logical_namerelationship_schema_name.

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
str

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 relationship_id, relationship_schema_name, , relationship_type, lookup_schema_name, referenced_entitye referencing_entity.

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
str

Nome do esquema da tabela (por exemplo "new_MyTestTable").

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
str

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
str

Nome do esquema da tabela (por exemplo, "new_MyTestTable" ou "account").

Retornos

Tipo Description
dict,

Dicionário que contém table_schema_name, table_logical_name, entity_set_namee metadata_id. Retorna Nenhum se a tabela não for encontrada.

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
str

O nome do esquema do relacionamento.

Retornos

Tipo Description

Metadados de relação ou None se não forem encontrados.

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
str

Expressão OData $filter opcional para restringir ainda mais a lista de tabelas retornadas (por exemplo "SchemaName eq 'Account'"). Os nomes de coluna em expressões de filtro devem usar os nomes de propriedade exatos dos EntityDefinitions metadados (normalmente PascalCase).

select
Obrigatório
list of str

Lista opcional de nomes de propriedades a serem incluídos na resposta (projetada por meio da opção de consulta OData $select ). Os nomes de propriedade devem usar os nomes exatos de PascalCase dos EntityDefinitions metadados (por exemplo ["LogicalName", "SchemaName", "DisplayName"]). Quando None (o padrão) ou uma lista vazia, todas as propriedades são retornadas.

Parâmetros somente de palavra-chave

Nome Description
filter
Valor padrão: None
select
Valor padrão: None

Retornos

Tipo Description
list of dict

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
str

Nome do esquema da tabela (por exemplo "new_MyTestTable").

columns
Obrigatório
str ou list of str

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 "new_TestColumn").

Retornos

Tipo Description
list of str

Nomes de esquema das colunas que foram removidas.

Exceções

Tipo Description

Se a tabela ou uma coluna especificada não existir.