Convert To Delta (Delta Lake)

CONVERT TO DELTA parquet.`path/to/table` [NO STATISTICS]
[PARTITIONED BY (col_name1 col_type1, col_name2 col_type2, ...)]

Convert an existing Parquet table to a Delta Lake table in-place. This command lists all the files in the directory, creates a Delta Lake transaction log that tracks these files, and automatically infers the data schema by reading the footers of all Parquet files. The conversion process collects statistics to improve query performance on the converted Delta Lake table.

NO STATISTICS
Bypass statistics collection during the conversion process and finish conversion faster. After the table is converted to Delta Lake, you can use OPTIMIZE ZORDER BY to reorganize the data layout and generate statistics.
PARTITIONED BY
Partition the created table by the specified columns. Required if the data is partitioned. The conversion process aborts and throw an exception if the directory structure does not conform to the PARTITIONED BY specification. If you do not provide the PARTITIONED BY clause, the command assumes that the table is not partitioned.

Caveats

Any file not tracked by Delta Lake is invisible and can be deleted when you run VACUUM. You should avoid updating or appending data files during the conversion process. After the table is converted, make sure all writes go through Delta.

Undo the conversion

If you have performed Delta Lake operations such as DELETE or OPTIMIZE that can change the data files, first run the following command for garbage collection:

VACUUM delta.`path/to/table` RETAIN 0 HOURS

Then, delete the path/to/table/_delta_log directory.