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.
Função com valor de tabela
Aplica-se a:
SQL do Databricks
Runtime do Databricks
Retorna um log das alterações em uma tabela do Delta Lake com o Feed de Dados de Alterações habilitado.
Para invocar essa função, você precisa ter, pelo menos, um dos seguintes:
- Privilégio
SELECTna tabela especificada - Ser o proprietário da tabela
- Ter privilégios administrativos
Sintaxe
table_changes ( table_str, start [, end ] )
Argumentos
table_str: um literal STRING que representa o nome opcionalmente qualificado da tabela.start: um literal BIGINT ou TIMESTAMP, representando a primeira versão ou carimbo de data/hora da alteração a ser retornada.A função retorna um erro se
startfor:- Uma versão anterior à versão mais antiga disponível da tabela.
- Uma versão posterior à versão mais recente da tabela.
- Um carimbo de tempo posterior ao último carimbo de tempo de commit.
end: um literal BIGINT ou TIMESTAMP opcional, representando a última versão ou carimbo de data/hora da alteração a ser retornada. Se não especificado, todas as alterações atéstarta mudança atual são retornadas.A função retorna um erro se
endfor:- Uma versão posterior à versão mais recente da tabela, ou um carimbo de tempo posterior ao último carimbo de tempo de commit.
- Uma versão anterior à versão mais antiga disponível da tabela, ou um carimbo de tempo anterior ao carimbo de tempo de commit mais antigo disponível.
Para retornar todas as alterações até
starta versão mais recente, omitaend.
Retornos
Uma tabela que inclui todas as colunas da tabela identificada em table_str, além das seguintes colunas:
_change_type STRING NOT NULLEspecifica a alteração:
delete,insert,update_preimageouupdate_postimage_commit_version BIGINT NOT NULLEspecifica a versão do commit da tabela associada à alteração.
_commit_timestamp TIMESTAMP NOT NULLEspecifica o carimbo de data/hora do commit associado à alteração.
Se table_str não representar um nome de tabela qualificado, o nome será qualificado com o valor de current_schema.
Se o nome da tabela contiver espaços ou pontos, use crases dentro da cadeia de caracteres para citar essa parte do nome.
Exemplos
-- Create a Delta table with Change Data Feed;
> CREATE TABLE myschema.t(c1 INT, c2 STRING) TBLPROPERTIES(delta.enableChangeDataFeed=true);
-- Modify the table
> INSERT INTO myschema.t VALUES (1, 'Hello'), (2, 'World');
> INSERT INTO myschema.t VALUES (3, '!');
> UPDATE myschema.t SET c2 = upper(c2) WHERE c1 < 3;
> DELETE FROM myschema.t WHERE c1 = 3;
-- Show the history of table change events
> DESCRIBE HISTORY myschema.t;
version timestamp userId userName operation operationParameters ...
4 2022-09-01T18:32:35.000+0000 6167625779053302 alf@melmak.et DELETE {"predicate":"[\"(spark_catalog.myschema.t.c1 = 3)\"]"}
3 2022-09-01T18:32:32.000+0000 6167625779053302 alf@melmak.et UPDATE {"predicate":"(c1#3195878 < 3)"}
2 2022-09-01T18:32:28.000+0000 6167625779053302 alf@melmak.et WRITE {"mode":"Append","partitionBy":"[]"}
1 2022-09-01T18:32:26.000+0000 6167625779053302 alf@melmak.et WRITE {"mode":"Append","partitionBy":"[]"}
0 2022-09-01T18:32:23.000+0000 6167625779053302 alf@melmak.et CREATE TABLE {"isManaged":"true","description":null,"partitionBy":"[]","properties":"{\"delta.enableChangeDataFeed\":\"true\"}"}
-- Show the change table feed using a the commit timestamp retrieved from the history.
> SELECT * FROM table_changes('`myschema`.`t`', 2);
c1 c2 _change_type _commit_version _commit_timestamp
3 ! insert 2 2022-09-01T18:32:28.000+0000
2 WORLD update_postimage 3 2022-09-01T18:32:32.000+0000
2 World update_preimage 3 2022-09-01T18:32:32.000+0000
1 Hello update_preimage 3 2022-09-01T18:32:32.000+0000
1 HELLO update_postimage 3 2022-09-01T18:32:32.000+0000
3 ! delete 4 2022-09-01T18:32:35.000+0000
-- Show the ame change table feed using a point in time.
> SELECT * FROM table_changes('`myschema`.`t`', '2022-09-01T18:32:27.000+0000') ORDER BY _commit_version;
c1 c2 _change_type _commit_version _commit_timestamp
3 ! insert 2 2022-09-01T18:32:28.000+0000
2 WORLD update_postimage 3 2022-09-01T18:32:32.000+0000
2 World update_preimage 3 2022-09-01T18:32:32.000+0000
1 Hello update_preimage 3 2022-09-01T18:32:32.000+0000
1 HELLO update_postimage 3 2022-09-01T18:32:32.000+0000
3 ! delete 4 2022-09-01T18:32:35.000+0000