Weryfikacja schematu usługi Delta Lake

Usługa Delta Lake automatycznie sprawdza, czy schemat zapisywanej ramki danych jest zgodny ze schematem tabeli. Usługa Delta Lake używa następujących reguł w celu określenia, czy zapis z ramki danych do tabeli jest zgodny:

  • Wszystkie kolumny ramki danych muszą istnieć w tabeli docelowej. Jeśli w tabeli nie ma kolumn w ramce danych, zostanie zgłoszony wyjątek. Kolumny obecne w tabeli, ale nie w ramce danych są ustawione na wartość null.
  • Typy danych kolumn ramki danych muszą być zgodne z typami danych kolumn w tabeli docelowej. Jeśli nie są one zgodne, zostanie zgłoszony wyjątek.
  • Nazwy kolumn ramki danych nie mogą się różnić tylko wielkością liter. Oznacza to, że nie można mieć kolumn takich jak "Foo" i "foo" zdefiniowanych w tej samej tabeli. Mimo że w trybie domyślnym lub bez uwzględniania wielkości liter można użyć platformy Spark, parquet jest uwzględniany podczas przechowywania i zwracania informacji o kolumnie. Usługa Delta Lake zachowuje wielkość liter, ale nie jest wrażliwa na przechowywanie schematu i ma to ograniczenie, aby uniknąć potencjalnych błędów, uszkodzenia danych lub problemów z utratą.

Usługa Delta Lake obsługuje DDL, aby jawnie dodać nowe kolumny i możliwość automatycznego aktualizowania schematu.

Jeśli określisz inne opcje, takie jak partitionBy, w połączeniu z trybem dołączania usługa Delta Lake sprawdza, czy są one zgodne i zgłasza błąd pod kątem niezgodności. Gdy partitionBy nie jest obecny, dołącza automatycznie następuje partycjonowanie istniejących danych.

Uwaga

INSERT składnia zapewnia wymuszanie schematu i obsługuje ewolucję schematu. Jeśli nie można bezpiecznie rzutować typu danych kolumny na typ danych tabeli usługi Delta Lake, zgłaszany jest wyjątek środowiska uruchomieniowego. Jeśli ewolucja schematu jest włączona, nowe kolumny mogą istnieć jako ostatnie kolumny schematu (lub kolumny zagnieżdżone), aby schemat ewoluował.

Walidacja schematu dla scalania usługi Delta Lake

merge automatycznie sprawdza, czy schemat danych generowanych przez wyrażenia wstawiania i aktualizacji jest zgodny ze schematem tabeli. Używa ona następujących reguł w celu określenia, czy operacja jest zgodna merge :

  • W przypadku update akcji i insert określone kolumny docelowe muszą istnieć w docelowej tabeli delty.
  • W przypadku updateAll i insertAll akcji źródłowy zestaw danych musi zawierać wszystkie kolumny docelowej tabeli delty. Źródłowy zestaw danych może zawierać dodatkowe kolumny i są ignorowane.
  • Dla wszystkich akcji, jeśli typ danych wygenerowany przez wyrażenia generujące kolumny docelowe różnią się od odpowiednich kolumn w docelowej tabeli delty, merge spróbuje rzutować je do typów w tabeli.

Zobacz Automatyczna ewolucja schematu na potrzeby scalania usługi Delta Lake.