Delta Lake-schemavalidatie

Delta Lake valideert automatisch of het schema van het dataframe dat wordt geschreven compatibel is met het schema van de tabel. Delta Lake gebruikt de volgende regels om te bepalen of een schrijfbewerking van een DataFrame naar een tabel compatibel is:

  • Alle DataFrame-kolommen moeten aanwezig zijn in de doeltabel. Als er kolommen in het DataFrame zijn die niet aanwezig zijn in de tabel, wordt er een uitzondering gegenereerd. Kolommen die aanwezig zijn in de tabel, maar niet in het DataFrame, zijn ingesteld op null.
  • DataFrame-kolomgegevenstypen moeten overeenkomen met de kolomgegevenstypen in de doeltabel. Als ze niet overeenkomen, wordt er een uitzondering gegenereerd.
  • DataFrame-kolomnamen kunnen niet alleen per geval verschillen. Dit betekent dat u geen kolommen zoals 'Foo' en 'foo' in dezelfde tabel kunt definiĆ«ren. Hoewel u Spark kunt gebruiken in de modus hoofdlettergevoelig of ongevoelig (standaard), is Parquet hoofdlettergevoelig bij het opslaan en retourneren van kolomgegevens. Delta Lake is hoofdletterbewaarzaamd, maar niet gevoelig bij het opslaan van het schema en heeft deze beperking om potentiĆ«le fouten, beschadiging van gegevens of verliesproblemen te voorkomen.

Delta Lake ondersteunt DDL om expliciet nieuwe kolommen toe te voegen en de mogelijkheid om het schema automatisch bij te werken.

Als u andere opties opgeeft, zoals partitionBy, in combinatie met de toevoegmodus, valideert Delta Lake of deze overeenkomen en wordt er een fout gegenereerd voor eventuele niet-overeenkomende opties. Wanneer partitionBy niet aanwezig is, volgen toevoegingen automatisch de partitionering van de bestaande gegevens.

Opmerking

INSERT Syntaxis biedt schema-afdwinging en ondersteunt schema-evolutie. Als het gegevenstype van een kolom niet veilig kan worden gecast naar het gegevenstype van uw Delta Lake-tabel, wordt er een runtime-uitzondering gegenereerd. Als schema-evolutie is ingeschakeld, kunnen nieuwe kolommen bestaan als de laatste kolommen van uw schema (of geneste kolommen) voor de ontwikkeling van het schema.

Schemavalidatie voor Delta Lake-samenvoeging

merge valideert automatisch of het schema van de gegevens die worden gegenereerd door insert- en update-expressies compatibel zijn met het schema van de tabel. De volgende regels worden gebruikt om te bepalen of de merge bewerking compatibel is:

  • Voor update acties en insert moeten de opgegeven doelkolommen aanwezig zijn in de delta-doeltabel.
  • Voor updateAll acties en insertAll moet de brongegevensset alle kolommen van de delta-doeltabel bevatten. De brongegevensset kan extra kolommen bevatten en deze worden genegeerd.
  • Als voor alle acties het gegevenstype dat wordt gegenereerd door de expressies die de doelkolommen produceren, verschilt van de overeenkomende kolommen in de delta-doeltabel, merge wordt geprobeerd deze te casten naar de typen in de tabel.

Zie Automatische schema-evolutie voor Delta Lake-samenvoeging.