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.
Este artigo fornece a sintaxe SQL do Spark para criar, listar, renomear e eliminar vistas de lagos materializadas no Fabric.
Sugestão
Para criar a sua primeira vista materializada para o lago, consulte Comece com vistas materializadas para o lago.
Crie uma vista materializada do lago
Você pode definir uma vista materializada do lago a partir de qualquer mesa ou de outra vista materializada do lago dentro de uma casa do 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 seu espaço de trabalho contém espaços, inclua-o em backticks:
`My Workspace`.lakehouse.schema.view_name - Os nomes materializados de vistas de lago são insensíveis a maiúsculas minúsculas e são convertidos para minúsculas (por exemplo,
MyTestViewtorna-semytestview).
Arguments
| Parâmetro | Descrição |
|---|---|
OR REPLACE |
Sobrescreve qualquer vista materializada existente para o lago com o mesmo nome. Não pode ser combinado com IF NOT EXISTS. |
IF NOT EXISTS |
Cria a vista materializada do lago apenas se esta ainda não existir. A instrução é executada sem erro se a vista 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 booleana que cada linha deve satisfazer. Podes definir múltiplas restrições. |
ON MISMATCH |
Ação a tomar quando uma linha viola uma restrição.
DROP remove silenciosamente a fila; FAIL Para a atualização com um erro. A predefinição é FAIL. |
PARTITIONED BY |
Colunas para particionar a vista materializada do lago, o que pode melhorar o desempenho das consultas para leituras filtradas. |
COMMENT |
Descrição em texto livre armazenada com a definição materializada da vista do lago. |
TBLPROPERTIES |
Pares-chave-valor armazenados como metadados na vista do lago materializada. |
AS select_statement |
A SELECT consulta que define os dados na vista materializada do lago. |
Examples
O exemplo seguinte cria uma vista de lago materializada com uma restrição de qualidade de dados, um comentário e particionamento. A cláusula OR REPLACE substitui qualquer vista 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 seguinte cria uma vista materializada do lago mais simples. A IF NOT EXISTS cláusula previne um erro se a vista já existir, tornando-a segura para scripts de implementaçã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
Sugestão
Gere a renovação materializada da vista para o lago a partir da sua casa
Depois de criar as suas vistas materializadas do lake, não orqueste a respetiva atualização a partir de um notebook. Em vez disso, use as duas funcionalidades integradas no lakehouse:
- Linhagem: O Fabric determina a ordem das dependências entre as suas vistas de lake materializadas a partir das respetivas definições. Para abrir a vista de linhagem, selecione o separador Vistas de lagos materializados na fita e depois selecione Gerir. A partir daí, pode acompanhar uma execução em curso e inspecionar as dependências ascendentes e descendentes de cada visualização.
- Atualização agendada: A partir da mesma vista Gerir , crie um ou mais horários para atualizar todas as vistas do lago materializadas ou um subconjunto selecionado. Cada agendamento é executado de forma independente e atualiza as visualizações por ordem de dependência, garantindo que as visualizações a jusante leem sempre dados atualizados das suas visualizações a montante. O Fabric repete automaticamente as tentativas em caso de falhas transitórias.
Use cadernos para escrever e iterar sobre as suas definições materializadas de vista do lago. Deixe a linhagem e a atualização agendada assegurarem a ordenação, a execução e as novas tentativas — para obter dados fiáveis e reproduzíveis com menos código para manter.
Obtenha uma lista de vistas materializadas do lago
Para obter a lista de todas as vistas de lago materializadas num esquema, use a seguinte sintaxe:
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
Por exemplo, para listar todas as vistas materializadas do lago no silver esquema:
SHOW MATERIALIZED LAKE VIEWS IN silver;
Recuperar a instrução que criou uma vista materializada do lago
Para obter a instrução CREATE para uma vista materializada de lago, utilize 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 vista materializada do lago
Para modificar a definição de uma vista de lago materializada (como a SELECT consulta, restrições ou particionamento), use o comando CREATE OR REPLACE (CRIAR OU SUBSTITUIR ). Alternativamente, podes apagar a visualização existente e recriá-la.
Renomear uma vista materializada do lake
Para renomear uma vista 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 é suportado apenas para renomeação. Para modificar a definição ou outras propriedades (como a SELECT consulta, restrições ou particionamento), veja Atualizar uma vista de lago materializada.
Apagar uma vista materializada do lago
Pode eliminar uma vista materializada do lake usando a opção Eliminar no explorador de objetos do lakehouse ou executando o comando DROP. A sintaxe é:
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
Por exemplo, para eliminar products_with_sales:
DROP MATERIALIZED LAKE VIEW products_with_sales;
Observação
Soltar ou renomear uma vista de lago materializada afeta a visualização de linhagem e a atualização programada. Certifique-se de atualizar a referência em todas as vistas do lago materializadas dependentes.
Limitações atuais
As seguintes limitações aplicam-se às instruções SQL do Spark para vistas materializadas de lagos:
-
Nomes de esquemas — Nomes de esquemas em maiúsculas (por exemplo,
MYSCHEMA) não são suportados. Usa maiúsculas mistas ou minúsculas. -
Nenhuma instrução de linguagem de manipulação de dados (DML) — Não pode executar as instruções
INSERT,UPDATE, ouDELETEnas visualizações materializadas do lago. Os dados são preenchidos apenas pela consultaSELECTna definição. -
Sem consultas de viagem no tempo — A
SELECTconsulta numa definição de vista de lago materializada não pode usar a sintaxe de viagem no tempo de Delta Lake (por exemplo,VERSION AS OFouTIMESTAMP AS OF). -
Sem funções definidas pelo utilizador — As funções definidas pelo utilizador (UDFs) não são suportadas na
SELECTconsulta que define uma vista de lago materializada. -
Sem vistas temporárias como fontes — A
SELECTconsulta pode consultar tabelas e outras vistas materializadas do lago, mas não vistas temporárias. -
Propriedades do Spark ao nível da sessão — As propriedades de configuração do Spark definidas ao nível da sessão (por exemplo,
spark.conf.set(...)) não são aplicadas durante uma atualização programada. Coloque as propriedades ao nível da casa do lago ou do espaço de trabalho em vez disso.