Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Utilize a API de metadados adicionais de tabela do OneLake para ler e escrever descrições e etiquetas de chave-valor para uma tabela e as suas colunas. Esta API utiliza uma rota REST comum em vez das rotas compatíveis com o Iceberg REST Catalog ou Unity Catalog.
Por exemplo, adicione uma descrição que explique o propósito comercial de uma tabela, identifique a tabela com a sua equipa proprietária e descreva como interpretar uma coluna. Estas operações funcionam com metadados descritivos, não com linhas de tabela. Para recuperar linhas, use a API de leitura de tabelas OneLake.
Importante
A API adicional de metadados de tabelas está em pré-visualização pública. As funcionalidades e o comportamento podem mudar antes da disponibilidade geral.
Prerequisites
- Complete os pré-requisitos da API de tabelas partilhadas e os passos de autenticação.
- Identifique o ID do espaço de trabalho, o ID do item, o nome do esquema e o nome da tabela para a sua tabela alvo.
- Identifique as colunas existentes que pretende descrever ou etiquetar.
- Use uma identidade com as permissões necessárias para ler ou escrever metadados para a tabela de destino.
Os exemplos usam uma tabela nomeada sales no dbo esquema e uma coluna existente chamada customer_id. Substitui esses nomes pelos nomes da tua tabela.
Ponto final e operações
Utilize o seguinte URL base:
https://onelake.table.fabric.microsoft.com
Ambas as operações utilizam a mesma rota:
/common/v1/<WorkspaceID>/<ItemID>/schemas/<SchemaName>/tables/<TableName>/additionalMetadata
| Method | Operação | Resposta com êxito |
|---|---|---|
GET |
Leia metadados adicionais para uma tabela e as suas colunas. |
200 OK com uma resposta de metadados JSON. |
POST |
Defina metadados adicionais para uma tabela e as suas colunas. |
200 OK com uma resposta de metadados JSON. |
Utilize GUIDs para <WorkspaceID> e <ItemID>. Codifique por URL os nomes do esquema e das tabelas como segmentos de caminho individuais. Inclua um Authorization: Bearer <Token> cabeçalho com um token de acesso Microsoft Entra ID para a audiência https://storage.azure.com/. Para POST, inclua também Content-Type: application/json.
Descrições e etiquetas suportadas
Utilize estes campos num pedido POST:
| Field | Tipo | Descrição e limites |
|---|---|---|
description |
String | A descrição da tabela. Máximo 1.024 caracteres. |
tags |
Objeto | Etiquetas de tabela como pares chave-valor de string. Cada chave tem um máximo de 128 caracteres, e cada valor tem um máximo de 256 caracteres. |
columns |
Matriz | Metadados adicionais para as colunas que identifica no pedido. |
columns[].columnName |
String | O nome de uma coluna existente. Use este campo para identificar a coluna que pretende descrever ou etiquetar. |
columns[].description |
String | A descrição da coluna. Máximo 1.024 caracteres. |
columns[].tags |
Objeto | Etiquetas de coluna como pares chave-valor de string. Os limites de chave e valor são os mesmos que para tags de tabela. |
Leia metadados adicionais
Envie um GET pedido para obter metadados ao nível da tabela e da coluna.
GET https://onelake.table.fabric.microsoft.com/common/v1/<WorkspaceID>/<ItemID>/schemas/dbo/tables/sales/additionalMetadata
Authorization: Bearer <Token>
Accept: application/json
Um pedido bem-sucedido retorna 200 OK. O JSON seguinte mostra o formato de resposta:
{
"description": "Sales transactions.",
"tags": {
"domain": "sales",
"owner": "sales-analytics"
},
"columns": [
{
"columnName": "customer_id",
"description": "Customer identifier.",
"tags": {
"role": "customer-key"
}
}
]
}
Os valores, nomes das colunas e campos na sua resposta dependem da tabela de destino e dos seus metadados. O contrato não exige que todos os campos estejam presentes.
Escrever metadados adicionais
Envie um POST pedido com um corpo JSON para substituir os metadados adicionais da tabela.
Importante
POST substitui metadados adicionais existentes; não é uma atualização parcial. Inclua a descrição da tabela, as tags da tabela e as descrições das colunas e tags que pretende manter em cada pedido. Por exemplo, um pedido que contém apenas description define a descrição da tabela e remove etiquetas de tabela existentes e todas as descrições e etiquetas das colunas.
Este exemplo define uma descrição de tabela e etiquetas, além de uma descrição e etiqueta para customer_id. Identifica a coluna usando columnName.
POST https://onelake.table.fabric.microsoft.com/common/v1/<WorkspaceID>/<ItemID>/schemas/dbo/tables/sales/additionalMetadata
Authorization: Bearer <Token>
Content-Type: application/json
Accept: application/json
Corpo do pedido:
{
"description": "Sales transactions used for revenue reporting.",
"tags": {
"domain": "sales",
"owner": "sales-analytics"
},
"columns": [
{
"columnName": "customer_id",
"description": "Identifier of the customer associated with the sale.",
"tags": {
"role": "customer-key"
}
}
]
}
Um pedido bem-sucedido retorna 200 OK com uma resposta adicional de metadados. Por exemplo:
{
"description": "Sales transactions used for revenue reporting.",
"tags": {
"domain": "sales",
"owner": "sales-analytics"
},
"columns": [
{
"columnName": "customer_id",
"description": "Identifier of the customer associated with the sale.",
"tags": {
"role": "customer-key"
}
}
]
}
Envie outra GET solicitação para verificar os metadados após a escrita.
Preservar metadados existentes
Para alterar descrições ou etiquetas selecionadas sem remover outros metadados, use uma sequência de leitura-modificação-escrita:
- Envie um
GETpedido para ler os metadados adicionais atuais. - Altera as descrições ou etiquetas que pretendes atualizar nos metadados devolvidos. Mantém os outros campos, as chaves de etiquetas e as entradas das colunas que queres manter.
- Envie os metadados completos atualizados num
POSTpedido. - Envie outro
GETpedido para confirmar o resultado.
Coordena atualizações de metadados simultâneas para que não ocorra outra escrita entre as tuas requisições GET e POST.
Leia e escreva metadados com Python
O exemplo seguinte autentica com o Microsoft Entra ID, lê os metadados atuais, atualiza descrições e etiquetas selecionadas enquanto preserva outros metadados, e lê novamente os metadados. Não chama uma API de catálogo específica de formato nem solicita credenciais de armazenamento.
Caution
Ao executar este exemplo, são gravados metadados. Usa uma tabela de teste e uma coluna, e substitui as descrições e etiquetas de exemplo antes de o executares. O exemplo preserva os metadados da sua leitura inicial, mas pode sobrescrever alterações feitas por outro cliente antes da escrita.
Instale os pacotes de dependências:
python -m pip install azure-identity requests
Configure um método de autenticação Azure Identity suportado, como iniciar sessão localmente com CLI do Azure, antes de executar o exemplo.
import json
from urllib.parse import quote
import requests
from azure.identity import DefaultAzureCredential
workspace_id = "<WorkspaceID>"
item_id = "<ItemID>"
schema_name = "dbo"
table_name = "sales"
column_name = "customer_id"
url = (
"https://onelake.table.fabric.microsoft.com/common/v1/"
f"{workspace_id}/{item_id}/schemas/{quote(schema_name, safe='')}/"
f"tables/{quote(table_name, safe='')}/additionalMetadata"
)
with DefaultAzureCredential() as credential, requests.Session() as session:
session.headers.update({"Accept": "application/json"})
def request_metadata(method, **kwargs):
token = credential.get_token("https://storage.azure.com/.default")
response = session.request(
method,
url,
headers={"Authorization": f"Bearer {token.token}"},
timeout=30,
**kwargs,
)
response.raise_for_status()
return response.json()
metadata = request_metadata("GET")
print("Before:")
print(json.dumps(metadata, indent=2))
metadata["description"] = "Sales transactions used for revenue reporting."
metadata.setdefault("tags", {}).update(
{"domain": "sales", "owner": "sales-analytics"}
)
columns = metadata.setdefault("columns", [])
column = next(
(entry for entry in columns if entry.get("columnName") == column_name),
None,
)
if column is None:
column = {"columnName": column_name}
columns.append(column)
column["description"] = "Identifier of the customer associated with the sale."
column.setdefault("tags", {}).update({"role": "customer-key"})
print("Write response:")
print(json.dumps(request_metadata("POST", json=metadata), indent=2))
print("After:")
print(json.dumps(request_metadata("GET"), indent=2))
O json argumento define o Content-Type: application/json cabeçalho do pedido. O exemplo levanta uma exceção para uma resposta HTTP falhada, em vez de a tratar como uma atualização de metadados bem-sucedida.
Trabalhar com metadados através de atalhos OneLake
Para um atalho interno de tabela OneLake, use o ID do espaço de trabalho, o ID do item, o nome do esquema e o nome da tabela do atalho na mesma rota adicional de metadados. As operações funcionam com os metadados da tabela de destino, não com uma cópia separada dos metadados para o atalho:
-
GETdevolve os metadados adicionais da tabela de destino, incluindo as suas descrições e etiquetas. -
POSTsubstitui os metadados adicionais da tabela alvo. As alterações são visíveis quando lês metadados através do atalho ou da tabela de destino.
Por exemplo, se um atalho chamado sales_shortcut aponta para sales, leia os metadados da tabela de origem através do atalho usando este pedido:
GET https://onelake.table.fabric.microsoft.com/common/v1/<WorkspaceID>/<ItemID>/schemas/dbo/tables/sales_shortcut/additionalMetadata
Authorization: Bearer <token>
Accept: application/json
Para atualizar os metadados através do atalho, envie um POST pedido HTTP para o mesmo URL. A semântica de substituição também se aplica à tabela de destino: um pedido apenas de descrição através do atalho remove as etiquetas e metadados de coluna existentes da tabela de destino. Utilize a sequência de leitura-modificação-escrita para reter os metadados que pretende manter.
O acesso requer permissões para a operação tanto no caminho de atalho como no caminho da tabela de destino. Para atalhos passthrough, a sua identidade precisa de ambos os conjuntos de permissões; permissões de tabela alvo por si só não são suficientes. Para atalhos delegados, o acesso ao destino utiliza a identidade de ligação configurada. Para mais detalhes, consulte OneLake shortcut security.
Tratar erros e diagnosticar solicitações
Para um pedido não bem-sucedido, inspecione o estado HTTP e a resposta de erro JSON. O contrato de erro tem a seguinte forma; os marcadores de código e mensagem não são valores específicos de erro de serviço:
{
"error": {
"code": "<ErrorCode>",
"message": "<ErrorMessage>"
}
}
O error objeto pode também incluir um target e um details array. Cada detalhe contém um code e um message, e pode incluir um target. O contrato não enumera códigos de erro ou códigos de estado específicos da operação.
Para diagnósticos, pode enviar um cabeçalho opcional x-ms-root-activity-id contendo um GUID. Grave o cabeçalho de resposta x-ms-root-activity-id quando diagnosticar problemas num pedido. Não registe o token bearer.