Naplnění nebo aktualizace sloupců v existující tabulce Delta

Problém

Máte existující rozdílovou tabulku s několika prázdnými sloupci. Tyto sloupce je potřeba naplnit nebo aktualizovat daty z nezpracovaného souboru Parquet.

Řešení

V tomto příkladu je customers tabulka, která je existující rozdílová tabulka. Má sloupec adresa s chybějícími hodnotami. Aktualizovaná data existují ve formátu Parquet.

  1. Vytvořte DataFrame ze souboru Parquet pomocí příkazu Apache Spark API:

    updatesDf = spark.read.parquet("/path/to/raw-file")
    
  2. Zobrazit obsah updatesDF DataFrame :

    display(updatesDf)
    
  3. Vytvoří tabulku z updatesDf DataFrame . V tomto příkladu je pojmenována updates.

    updatesDf.createOrReplaceTempView("updates")
    
  4. Ověřte obsah tabulky Updates a porovnejte ji s obsahem customers :

    display(customers)
    
  5. Pomocí MERGE INTO příkazu můžete sloučit data z updates tabulky do původní customers tabulky.

    MERGE INTO customers
    USING updates
    ON customers.customerId = source.customerId
    WHEN MATCHED THEN
      UPDATE SET address = updates.address
    WHEN NOT MATCHED
      THEN INSERT (customerId, address) VALUES (updates.customerId, updates.address)
    

Zde customers je původní rozdílová tabulka, která má address sloupec s chybějícími hodnotami. updates je tabulka vytvořená z DataFrame updatesDf , která je vytvořena čtením dat z nezpracovaného souboru. Do address sloupce původní rozdílové tabulky se naplní hodnoty z updates a přepíše všechny existující hodnoty ve address sloupci.

Pokud updates obsahuje zákazníky, kteří ještě nejsou v customers tabulce, pak příkaz přidá tyto nové záznamy o zákaznících.

Další příklady použití MERGE INTO najdete v tématu sloučení do (Delta Lake).