<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: DLT multiple source table to single silver table generating unexpected result in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/dlt-multiple-source-table-to-single-silver-table-generating/m-p/108621#M43098</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/23233"&gt;@NandiniN&lt;/a&gt;&amp;nbsp;, thank you for your reply.&lt;/P&gt;&lt;P&gt;In your example, you're using vendas_raw in the FROM statement, but I need to make a join of &lt;STRONG&gt;vendas_raw&lt;/STRONG&gt; and &lt;STRONG&gt;produtos_raw&lt;/STRONG&gt;. Using the SQL code you provided, I won't get the result I was expecting, that was the &lt;STRONG&gt;vendas_silver&lt;/STRONG&gt; with additional information from &lt;STRONG&gt;produtos_raw.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Is there something I didn't get?&lt;/P&gt;</description>
    <pubDate>Mon, 03 Feb 2025 16:59:16 GMT</pubDate>
    <dc:creator>garciargs</dc:creator>
    <dc:date>2025-02-03T16:59:16Z</dc:date>
    <item>
      <title>DLT multiple source table to single silver table generating unexpected result</title>
      <link>https://community.databricks.com/t5/data-engineering/dlt-multiple-source-table-to-single-silver-table-generating/m-p/106564#M42520</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I´ve been trying this all day long. I'm build a POC of a pipeline that would be used on my everyday ETL.&lt;/P&gt;&lt;P&gt;I have two initial tables, vendas and produtos, and they are as the following:&lt;/P&gt;&lt;P&gt;vendas_raw&lt;/P&gt;&lt;TABLE border="1" width="99.63325183374083%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;venda_id&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;produto_id&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;data_venda&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;quantidade&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;valor_total&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;dth_ingestao&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;1&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;1&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;15/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;2&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;5000&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;2&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;2&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;16/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;1&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;2500&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;3&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;3&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;17/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;1&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;3000&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;4&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;4&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;18/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;1&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;2000&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;5&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;5&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;19/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;3&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;4500&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;6&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;6&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;20/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;1&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;800&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;7&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;7&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;21/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;2&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;2000&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;8&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;8&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;22/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;1&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;1200&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;9&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;9&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;23/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;4&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;600&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="10.893512851897185%" height="20"&gt;10&lt;/TD&gt;&lt;TD width="12.974296205630356%"&gt;10&lt;/TD&gt;&lt;TD width="13.096695226438188%"&gt;24/01/2025&lt;/TD&gt;&lt;TD width="12.239902080783354%"&gt;1&lt;/TD&gt;&lt;TD width="11.750305997552019%"&gt;300&lt;/TD&gt;&lt;TD width="38.80048959608323%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;produtos_raw&lt;/P&gt;&lt;TABLE border="1" width="91.70731707317077%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;produto_id&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;nome_produto&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;categoria&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;dth_ingestao&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;1&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Notebook&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Eletrônicos&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;2&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Smartphone&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Eletrônicos&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;3&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Televisão&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Eletrônicos&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;4&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Geladeira&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Eletrodomésticos&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;5&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Fogão&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Eletrodomésticos&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;6&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Micro-ondas&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Eletrodomésticos&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;7&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Cadeira Gamer&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Móveis&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;8&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Mesa de Escritório&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Móveis&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;9&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Luminária&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Decoração&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="14.878048780487806%"&gt;10&lt;/TD&gt;&lt;TD width="20.853658536585368%"&gt;Ventilador&lt;/TD&gt;&lt;TD width="22.68292682926829%"&gt;Eletrodomésticos&lt;/TD&gt;&lt;TD width="33.29268292682927%"&gt;2025-01-01T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;The final table would be a join of both, with all columns from &lt;STRONG&gt;vendas_raw&lt;/STRONG&gt; and only &lt;STRONG&gt;nome_produto&lt;/STRONG&gt; from &lt;STRONG&gt;produtos_raw&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;My code is:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import dlt
from pyspark.sql.functions import col, current_timestamp, lit

spark.conf.set("spark.databricks.delta.properties.defaults.enableChangeDataFeed", "true")

@dlt.table(
    table_properties={"quality": "bronze"}
)
def vendas_raw():
    return (spark.readStream.format("cloudFiles")
            .option("cloudFiles.format", "csv")  # Change to your file format
            .option("cloudFiles.schemaHints", "venda_id INT, produto_id INT, data_venda TIMESTAMP, quantidade INT, valor INT, dth_ingestao TIMESTAMP")
            .load("/Volumes/testedatabricks/default/datalake_desenvolvimento/DadosBrutos/teste_databricks/vendas/")
            .withColumnRenamed("dth_ingestao", "dth_ingestao_vendas")
            )  # Change to your cloud storage path

@dlt.table(
    table_properties={"quality": "bronze"}
)
def produtos_raw():
    return (spark.readStream.format("cloudFiles")
            .option("cloudFiles.format", "csv")  # Change to your file format
            .option("cloudFiles.schemaHints", "produto_id INT, nome_produto STRING, categoria STRING, dth_ingestao TIMESTAMP")
            .load("/Volumes/testedatabricks/default/datalake_desenvolvimento/DadosBrutos/teste_databricks/produtos/")
            .withColumnRenamed("dth_ingestao", "dth_ingestao_produtos")
    )  # Change to your cloud storage path

@dlt.view()
def vendas_view_silver():
    produtos_df = dlt.readStream("produtos_raw")
    vendas_df = dlt.readStream("vendas_raw")

    joined_df = (
      produtos_df.join(vendas_df, produtos_df["produto_id"] == vendas_df["produto_id"], "inner")
    )

    return joined_df.select(produtos_df["nome_produto"], vendas_df["*"]).withColumn("dth_ingestao", lit(current_timestamp()))


dlt.create_streaming_table("vendas_silver")
dlt.apply_changes(
    target="vendas_silver",
    source=joined_df,
    keys=["venda_id"],
    sequence_by=col("dth_ingestao")
)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;After first run of the pipeline, the &lt;STRONG&gt;vendas_&lt;/STRONG&gt;&lt;STRONG&gt;silver&lt;/STRONG&gt; table looks like this (replaced values in data_venda for readability):&lt;/P&gt;&lt;TABLE width="793px"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;nome_produto&lt;/TD&gt;&lt;TD width="95.5312px"&gt;venda_id&lt;/TD&gt;&lt;TD width="86.625px"&gt;produto_id&lt;/TD&gt;&lt;TD width="94.6406px"&gt;data_venda&lt;/TD&gt;&lt;TD width="90.1875px"&gt;quantidade&lt;/TD&gt;&lt;TD width="84.9844px"&gt;valor_total&lt;/TD&gt;&lt;TD width="215.281px"&gt;dth_ingestao&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Notebook&lt;/TD&gt;&lt;TD width="95.5312px"&gt;1&lt;/TD&gt;&lt;TD width="86.625px"&gt;1&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;2&lt;/TD&gt;&lt;TD width="84.9844px"&gt;5000&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Micro-ondas&lt;/TD&gt;&lt;TD width="95.5312px"&gt;6&lt;/TD&gt;&lt;TD width="86.625px"&gt;6&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.9844px"&gt;800&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Televisão&lt;/TD&gt;&lt;TD width="95.5312px"&gt;3&lt;/TD&gt;&lt;TD width="86.625px"&gt;3&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.9844px"&gt;3000&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Fogão&lt;/TD&gt;&lt;TD width="95.5312px"&gt;5&lt;/TD&gt;&lt;TD width="86.625px"&gt;5&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;3&lt;/TD&gt;&lt;TD width="84.9844px"&gt;4500&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Luminária&lt;/TD&gt;&lt;TD width="95.5312px"&gt;9&lt;/TD&gt;&lt;TD width="86.625px"&gt;9&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;4&lt;/TD&gt;&lt;TD width="84.9844px"&gt;600&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Geladeira&lt;/TD&gt;&lt;TD width="95.5312px"&gt;4&lt;/TD&gt;&lt;TD width="86.625px"&gt;4&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.9844px"&gt;2000&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Mesa de Escritório&lt;/TD&gt;&lt;TD width="95.5312px"&gt;8&lt;/TD&gt;&lt;TD width="86.625px"&gt;8&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.9844px"&gt;1200&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Cadeira Gamer&lt;/TD&gt;&lt;TD width="95.5312px"&gt;7&lt;/TD&gt;&lt;TD width="86.625px"&gt;7&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;2&lt;/TD&gt;&lt;TD width="84.9844px"&gt;2000&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Ventilador&lt;/TD&gt;&lt;TD width="95.5312px"&gt;10&lt;/TD&gt;&lt;TD width="86.625px"&gt;10&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.9844px"&gt;300&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="124.75px"&gt;Smartphone&lt;/TD&gt;&lt;TD width="95.5312px"&gt;2&lt;/TD&gt;&lt;TD width="86.625px"&gt;2&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.9844px"&gt;2500&lt;/TD&gt;&lt;TD width="215.281px"&gt;2025-01-22T02:00:58.673Z&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The problem is: updates will be in batch, and I might receive new batch lines simultaneously for &lt;STRONG&gt;vendas_raw&lt;/STRONG&gt; and &lt;STRONG&gt;produtos_raw&lt;/STRONG&gt;, but when I try to emulate it (adding new csv files in the folder) I have a strange output.&lt;/P&gt;&lt;P&gt;New produtos_raw&lt;/P&gt;&lt;TABLE width="469px"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="86.625px"&gt;produto_id&lt;/TD&gt;&lt;TD width="114.188px"&gt;nome_produto&lt;/TD&gt;&lt;TD width="90.1562px"&gt;categoria&lt;/TD&gt;&lt;TD width="177.031px"&gt;dth_ingestao&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="86.625px"&gt;1&lt;/TD&gt;&lt;TD width="114.188px"&gt;Laptop&lt;/TD&gt;&lt;TD width="90.1562px"&gt;Eletrônicos&lt;/TD&gt;&lt;TD width="177.031px"&gt;2025-01-03T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="86.625px"&gt;2&lt;/TD&gt;&lt;TD width="114.188px"&gt;Smartphone&lt;/TD&gt;&lt;TD width="90.1562px"&gt;Smart&lt;/TD&gt;&lt;TD width="177.031px"&gt;2025-01-03T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;New vendas_raw&lt;/P&gt;&lt;TABLE width="626px"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="75.9531px"&gt;venda_id&lt;/TD&gt;&lt;TD width="86.625px"&gt;produto_id&lt;/TD&gt;&lt;TD width="94.6406px"&gt;data_venda&lt;/TD&gt;&lt;TD width="90.1875px"&gt;quantidade&lt;/TD&gt;&lt;TD width="84.8281px"&gt;valor_total&lt;/TD&gt;&lt;TD width="192.766px"&gt;dth_ingestao&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="75.9531px"&gt;1&lt;/TD&gt;&lt;TD width="86.625px"&gt;1&lt;/TD&gt;&lt;TD width="94.6406px"&gt;15/01/2025&lt;/TD&gt;&lt;TD width="90.1875px"&gt;2&lt;/TD&gt;&lt;TD width="84.8281px"&gt;4500&lt;/TD&gt;&lt;TD width="192.766px"&gt;2025-01-03T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="75.9531px"&gt;11&lt;/TD&gt;&lt;TD width="86.625px"&gt;1&lt;/TD&gt;&lt;TD width="94.6406px"&gt;25/01/2025&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.8281px"&gt;5000&lt;/TD&gt;&lt;TD width="192.766px"&gt;2025-01-03T12:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Note that, in&amp;nbsp;&lt;STRONG&gt;produtos_raw&lt;/STRONG&gt; I am updating the&amp;nbsp;&lt;STRONG&gt;nome_produto&lt;/STRONG&gt; of&amp;nbsp;&lt;STRONG&gt;produto_id&lt;/STRONG&gt; 1 to Laptop (was Notebook) and in&amp;nbsp;&lt;STRONG&gt;vendas_raw&lt;/STRONG&gt;, I am updating the&amp;nbsp;&lt;STRONG&gt;valor_total&lt;/STRONG&gt; of&amp;nbsp;&lt;STRONG&gt;venda_id&lt;/STRONG&gt; 1 to 4500 (was 5000). Both share a relationship on&amp;nbsp;&lt;STRONG&gt;produto_id&lt;/STRONG&gt; == 1.&lt;/P&gt;&lt;P&gt;Expected output would be for&amp;nbsp;&lt;STRONG&gt;vendas_id&lt;/STRONG&gt; 1 in &lt;STRONG&gt;vendas_silver&lt;/STRONG&gt; to have the updated both&amp;nbsp;&lt;STRONG&gt;nome_produto&lt;/STRONG&gt; and&amp;nbsp;&lt;STRONG&gt;valor_total&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;As you can see in the resulting table (showing only updated rows),&amp;nbsp;&lt;STRONG&gt;valor_total&lt;/STRONG&gt; in&amp;nbsp;&lt;STRONG&gt;venda_id&lt;/STRONG&gt; = 1 should be 4500, and&amp;nbsp;&lt;STRONG&gt;nome_produto&lt;/STRONG&gt; in&amp;nbsp;&lt;STRONG&gt;venda_id&lt;/STRONG&gt; = 11 should be Laptop.&lt;/P&gt;&lt;TABLE width="766px"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="114.188px"&gt;nome_produto&lt;/TD&gt;&lt;TD width="75.9531px"&gt;venda_id&lt;/TD&gt;&lt;TD width="86.625px"&gt;produto_id&lt;/TD&gt;&lt;TD width="94.6406px"&gt;data_venda&lt;/TD&gt;&lt;TD width="90.1875px"&gt;quantidade&lt;/TD&gt;&lt;TD width="84.8281px"&gt;valor_total&lt;/TD&gt;&lt;TD width="218.578px"&gt;dth_ingestao&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="114.188px"&gt;Notebook&lt;/TD&gt;&lt;TD width="75.9531px"&gt;11&lt;/TD&gt;&lt;TD width="86.625px"&gt;1&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.8281px"&gt;5000&lt;/TD&gt;&lt;TD width="218.578px"&gt;2025-01-22T02:06:20.823Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="114.188px"&gt;Smartphone&lt;/TD&gt;&lt;TD width="75.9531px"&gt;2&lt;/TD&gt;&lt;TD width="86.625px"&gt;2&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;1&lt;/TD&gt;&lt;TD width="84.8281px"&gt;2500&lt;/TD&gt;&lt;TD width="218.578px"&gt;2025-01-22T02:06:20.823Z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="114.188px"&gt;Laptop&lt;/TD&gt;&lt;TD width="75.9531px"&gt;1&lt;/TD&gt;&lt;TD width="86.625px"&gt;1&lt;/TD&gt;&lt;TD width="94.6406px"&gt;dt&lt;/TD&gt;&lt;TD width="90.1875px"&gt;2&lt;/TD&gt;&lt;TD width="84.8281px"&gt;5000&lt;/TD&gt;&lt;TD width="218.578px"&gt;2025-01-22T02:06:20.823Z&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;It seens it is processing the streaming data only with the stored data, and not searching to use the most recent.&lt;/P&gt;&lt;P&gt;Thank you in advance, and sorry for long question.&lt;/P&gt;</description>
      <pubDate>Wed, 22 Jan 2025 02:12:52 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/dlt-multiple-source-table-to-single-silver-table-generating/m-p/106564#M42520</guid>
      <dc:creator>garciargs</dc:creator>
      <dc:date>2025-01-22T02:12:52Z</dc:date>
    </item>
    <item>
      <title>Re: DLT multiple source table to single silver table generating unexpected result</title>
      <link>https://community.databricks.com/t5/data-engineering/dlt-multiple-source-table-to-single-silver-table-generating/m-p/107063#M42696</link>
      <description>&lt;P&gt;When dealing with Change Data Capture (CDC) in Delta Live Tables, it's crucial to handle out-of-order data correctly. You can use the &lt;CODE&gt;APPLY CHANGES&lt;/CODE&gt; API to manage this. The &lt;CODE&gt;APPLY CHANGES&lt;/CODE&gt; API ensures that the most recent data is used by specifying a column in the source data to sequence records.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;dlt.apply_changes(
    target="vendas_silver",
    source="vendas",
    keys=["venda_id"],
    sequence_by=col("dth_ingestao"),
    apply_as_deletes=expr("operation = 'DELETE'"),
    except_column_list=["operation", "dth_ingestao"],
    stored_as_scd_type="1"
)&lt;/LI-CODE&gt;
&lt;P&gt;Which you are doing already, now ensure that you create and refresh the streaming tables correctly. This will help in propagating the updates downstream.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;CREATE OR REFRESH STREAMING TABLE vendas_silver;
APPLY CHANGES INTO live.vendas_silver
FROM stream(vendas_raw)
KEYS (venda_id)
APPLY AS DELETE WHEN operation = 'DELETE'
SEQUENCE BY dth_ingestao
COLUMNS * EXCEPT (operation, dth_ingestao)
STORED AS SCD TYPE 1;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Read more here -&amp;nbsp;&lt;A href="https://docs.databricks.com/en/delta-live-tables/cdc.html" target="_blank"&gt;https://docs.databricks.com/en/delta-live-tables/cdc.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 26 Jan 2025 12:18:54 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/dlt-multiple-source-table-to-single-silver-table-generating/m-p/107063#M42696</guid>
      <dc:creator>NandiniN</dc:creator>
      <dc:date>2025-01-26T12:18:54Z</dc:date>
    </item>
    <item>
      <title>Re: DLT multiple source table to single silver table generating unexpected result</title>
      <link>https://community.databricks.com/t5/data-engineering/dlt-multiple-source-table-to-single-silver-table-generating/m-p/108621#M43098</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/23233"&gt;@NandiniN&lt;/a&gt;&amp;nbsp;, thank you for your reply.&lt;/P&gt;&lt;P&gt;In your example, you're using vendas_raw in the FROM statement, but I need to make a join of &lt;STRONG&gt;vendas_raw&lt;/STRONG&gt; and &lt;STRONG&gt;produtos_raw&lt;/STRONG&gt;. Using the SQL code you provided, I won't get the result I was expecting, that was the &lt;STRONG&gt;vendas_silver&lt;/STRONG&gt; with additional information from &lt;STRONG&gt;produtos_raw.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Is there something I didn't get?&lt;/P&gt;</description>
      <pubDate>Mon, 03 Feb 2025 16:59:16 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/dlt-multiple-source-table-to-single-silver-table-generating/m-p/108621#M43098</guid>
      <dc:creator>garciargs</dc:creator>
      <dc:date>2025-02-03T16:59:16Z</dc:date>
    </item>
  </channel>
</rss>

