Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece a sintaxe do SQL do Spark para criar, listar, renomear e deletar vistas de lagos materializadas no Fabric.
Dica
Para criar sua primeira vista materializada do lago, confira Introdução às vistas materializadas do lago.
Criar uma exibição materializada do lago
Você pode definir uma vista materializada do lago de qualquer tabela ou de outra vista materializada do lago dentro de uma casa de lago.
Sintaxe
CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS] [workspace.lakehouse.schema].MLV_Identifier
[(
CONSTRAINT constraint_name1 CHECK (condition expression1) [ON MISMATCH DROP | FAIL],
CONSTRAINT constraint_name2 CHECK (condition expression2) [ON MISMATCH DROP | FAIL]
)]
[PARTITIONED BY (col1, col2, ... )]
[COMMENT "description or comment"]
[TBLPROPERTIES ("key1"="val1", "key2"="val2", ... )]
AS select_statement
Observação
- Se o nome do espaço de trabalho contiver espaços, coloque-o entre backticks:
`My Workspace`.lakehouse.schema.view_name - Os nomes de exibição de visualizações de lago materializadas não diferenciam maiúsculas de minúsculas e são convertidos em minúsculas (por exemplo,
MyTestViewtorna-semytestview).
Arguments
| Parâmetro | Descrição |
|---|---|
OR REPLACE |
Substitui qualquer vista de lago materializada existente com o mesmo nome. Não pode ser combinado com IF NOT EXISTS. |
IF NOT EXISTS |
Cria a exibição materializada do lago somente se ela ainda não existir. A instrução terá êxito sem erros se a exibição já estiver definida. Não pode ser combinado com OR REPLACE. |
MLV_Identifier |
Nome da vista materializada do lago. Pode ser totalmente qualificado como workspace.lakehouse.schema.name. |
CONSTRAINT ... CHECK |
Define uma regra de qualidade de dados. A CHECK cláusula especifica uma expressão booliana que cada linha deve satisfazer. Você pode definir várias restrições. |
ON MISMATCH |
Ação a ser tomada quando uma linha viola uma restrição.
DROP remove silenciosamente a linha; FAIL interrompe a atualização com um erro. O padrão é FAIL. |
PARTITIONED BY |
Colunas para particionar a vista materializada do lago de dados, o que pode melhorar o desempenho da consulta para leituras filtradas. |
COMMENT |
Descrição de texto livre armazenada com a definição de visualização do lago materializada. |
TBLPROPERTIES |
Pares chave-valor armazenados como metadados na exibição materializada do lago. |
AS select_statement |
A SELECT consulta que define os dados na visão materializada do lake. |
Exemplos
O exemplo a seguir cria uma vista materializada de lago com uma restrição de qualidade de dados, um comentário e particionamento. A cláusula OR REPLACE substitui qualquer visualização existente com o mesmo nome.
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
(
CONSTRAINT valid_quantity CHECK (quantity > 0) ON MISMATCH DROP
)
PARTITIONED BY (category)
COMMENT "Cleaned order data joined from products and orders"
AS SELECT
p.productID,
p.productName,
p.category,
o.orderDate,
o.quantity,
o.totalAmount
FROM bronze.products p INNER JOIN bronze.orders o
ON p.productID = o.productID
O exemplo a seguir cria uma exibição de lago materializada mais simples. A cláusula IF NOT EXISTS impede um erro se a vista já existir, tornando-o seguro para scripts de implantação.
CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.products_with_sales AS
SELECT
p.productID,
p.productName,
p.category,
CASE
WHEN COUNT(o.orderID) OVER (PARTITION BY p.productID) > 0 THEN TRUE
ELSE FALSE
END AS has_sales
FROM bronze.products p LEFT JOIN bronze.orders o
ON p.productID = o.productID
Dica
Gerencie a atualização da exibição materializada do lake no seu lakehouse
Depois de criar suas visões materializadas do lake, não orquestre sua atualização a partir de um notebook. Em vez disso, use os dois recursos internos do lakehouse:
- Linhagem: Fabric deriva a ordem de dependência entre suas exibições materializadas do lago de suas definições. Para abrir o modo de exibição de linhagem, selecione a guia Exibições materializadas do lago na faixa de opções e selecione Gerenciar. A partir daí, você pode acompanhar uma execução em andamento e inspecionar as dependências anteriores e posteriores de cada visão.
- Atualização agendada: Na mesma exibição Gerenciar, crie um ou mais agendamentos para atualizar todas as exibições materializadas do lake ou um subconjunto selecionado. Cada agendamento é executado de forma independente e atualiza exibições em ordem de dependência, portanto, exibições downstream sempre leem dados novos de suas exibições upstream. Fabric tenta novamente falhas transitórias para você.
Use blocos de anotações para criar e iterar em suas definições de exibição de lago materializadas. Deixe que a linhagem de dados e a atualização agendada cuidem da ordenação, da execução e das novas tentativas — para obter dados confiáveis e reproduzíveis com menos código para manter.
Obter uma lista de vistas materializadas do lago
Para obter a lista de todas as exibições materializadas do lago em um esquema, use a seguinte sintaxe:
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
Por exemplo, para listar todas as visões de lago materializadas no esquema silver.
SHOW MATERIALIZED LAKE VIEWS IN silver;
Recuperar a instrução que criou uma exibição materializada do lago
Para obter a CREATE instrução de uma exibição de lago materializada, use a seguinte sintaxe:
SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;
Por exemplo, para recuperar a definição de products_with_sales:
SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;
Atualizar uma exibição materializada do lago
Para modificar a definição de uma exibição de lago materializada (como a SELECT consulta, restrições ou particionamento), use o comando CREATE OR REPLACE . Como alternativa, você pode excluir a exibição existente e recriá-la.
Renomear uma exibição materializada do lago
Para renomear uma exibição de lago materializada existente, use o ALTER MATERIALIZED LAKE VIEW comando. A sintaxe é:
ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;
Por exemplo, para renomear products_with_sales:
ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;
Observação
O ALTER MATERIALIZED LAKE VIEW comando tem suporte apenas para renomeação. Para modificar a definição ou outras propriedades (como a SELECT consulta, restrições ou particionamento), consulte Atualizar uma exibição de lago materializada.
Excluir uma exibição materializada do lago
Você pode excluir uma exibição materializada do lago usando a opção Excluir no gerenciador de objetos lakehouse ou executando um DROP comando. A sintaxe é:
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
Por exemplo, para excluir products_with_sales:
DROP MATERIALIZED LAKE VIEW products_with_sales;
Observação
Remover ou renomear uma exibição de lago materializada afeta a exibição de linhagem e a atualização agendada. Atualize a referência em todas as exibições de lago materializadas dependentes.
Limitações atuais
As seguintes limitações se aplicam às instruções SQL do Spark para exibições de lago materializadas:
-
Não há suporte para nomes de esquema — nomes de esquema em letras maiúsculas (por exemplo,
MYSCHEMA) . Use maiúsculas ou minúsculas mistas. -
Nenhuma instrução DML (linguagem de manipulação de dados) – você não pode executar instruções de
INSERT,UPDATEouDELETEcontra uma vista materializada do lago de dados. Os dados são preenchidos somente pelaSELECTconsulta na definição. -
Nenhuma consulta de viagem no tempo — a
SELECTconsulta em uma definição de visualização materializada do lago não pode usar a sintaxe de viagem no tempo do Delta Lake (por exemplo,VERSION AS OFouTIMESTAMP AS OF). - As funções definidas pelo usuário (UDFs) não são suportadas na consulta que define um modo de exibição de lago materializado.
-
Sem vistas temporárias como fontes – a
SELECTconsulta pode referenciar tabelas e outras vistas de lago materializadas, mas não vistas temporárias. -
As propriedades do Spark no nível da sessão — as propriedades de configuração do Spark definidas no nível da sessão (por exemplo,
spark.conf.set(...)) não são aplicadas durante uma atualização agendada. Em vez disso, defina propriedades no nível do lakehouse ou do workspace.