Описание
Специальный формат для чтения метаданных файла Parquet (https://parquet.apache.org/docs/file-format/metadata/). Он всегда выводит одну строку со следующей структурой/содержимым:
num_columns- количество столбцов- ``num_rows` - общее количество строк
num_row_groups- общее количество групп строкformat_version- версия формата Parquet, всегда 1.0 или 2.6total_uncompressed_size- общий размер данных в несжатом виде в байтах, вычисляется как сумма total_byte_size из всех групп строкtotal_compressed_size- общий размер данных в сжатом виде в байтах, вычисляется как сумма total_compressed_size из всех групп строкcolumns- список метаданных столбцов со следующей структурой:name- имя столбцаpath- путь столбца (отличается от name для вложенного столбца)max_definition_level- максимальный уровень определенияmax_repetition_level- максимальный уровень повторенияphysical_type- физический тип столбцаlogical_type- логический тип столбцаcompression- сжатие, используемое для этого столбцаtotal_uncompressed_size- общий размер столбца в несжатом виде в байтах, вычисляется как сумма total_uncompressed_size столбца из всех групп строкtotal_compressed_size- общий размер столбца в сжатом виде в байтах, вычисляется как сумма total_compressed_size столбца из всех групп строкspace_saved- процент места, сэкономленного за счёт сжатия, вычисляется как (1 - total_compressed_size/total_uncompressed_size).encodings- список кодировок, используемых для этого столбца
row_groups- список метаданных групп строк со следующей структурой:num_columns- количество столбцов в группе строкnum_rows- количество строк в группе строкtotal_uncompressed_size- общий размер группы строк в несжатом виде в байтахtotal_compressed_size- общий размер группы строк в сжатом виде в байтахcolumns- список метаданных фрагментов столбцов со следующей структурой:name- имя столбцаpath- путь столбцаtotal_compressed_size- общий размер столбца в сжатом виде в байтахtotal_uncompressed_size- общий размер группы строк в несжатом виде в байтахhave_statistics- булевый флаг, указывающий, содержат ли метаданные фрагмента столбца статистику столбцаstatistics- статистика фрагмента столбца (все поля имеют значение NULL, если have_statistics = false) со следующей структурой:num_values- количество значений, не равных NULL, во фрагменте столбцаnull_count- количество значений NULL во фрагменте столбцаdistinct_count- количество различных значений во фрагменте столбцаmin- минимальное значение фрагмента столбцаmax- максимальное значение фрагмента столбца
Пример использования
Пример:
SELECT *
FROM file(data.parquet, ParquetMetadata)
FORMAT PrettyJSONEachRow{
"num_columns": "2",
"num_rows": "100000",
"num_row_groups": "2",
"format_version": "2.6",
"metadata_size": "577",
"total_uncompressed_size": "282436",
"total_compressed_size": "26633",
"columns": [
{
"name": "number",
"path": "number",
"max_definition_level": "0",
"max_repetition_level": "0",
"physical_type": "INT32",
"logical_type": "Int(bitWidth=16, isSigned=false)",
"compression": "LZ4",
"total_uncompressed_size": "133321",
"total_compressed_size": "13293",
"space_saved": "90.03%",
"encodings": [
"RLE_DICTIONARY",
"PLAIN",
"RLE"
]
},
{
"name": "concat('Hello', toString(modulo(number, 1000)))",
"path": "concat('Hello', toString(modulo(number, 1000)))",
"max_definition_level": "0",
"max_repetition_level": "0",
"physical_type": "BYTE_ARRAY",
"logical_type": "None",
"compression": "LZ4",
"total_uncompressed_size": "149115",
"total_compressed_size": "13340",
"space_saved": "91.05%",
"encodings": [
"RLE_DICTIONARY",
"PLAIN",
"RLE"
]
}
],
"row_groups": [
{
"num_columns": "2",
"num_rows": "65409",
"total_uncompressed_size": "179809",
"total_compressed_size": "14163",
"columns": [
{
"name": "number",
"path": "number",
"total_compressed_size": "7070",
"total_uncompressed_size": "85956",
"have_statistics": true,
"statistics": {
"num_values": "65409",
"null_count": "0",
"distinct_count": null,
"min": "0",
"max": "999"
}
},
{
"name": "concat('Hello', toString(modulo(number, 1000)))",
"path": "concat('Hello', toString(modulo(number, 1000)))",
"total_compressed_size": "7093",
"total_uncompressed_size": "93853",
"have_statistics": true,
"statistics": {
"num_values": "65409",
"null_count": "0",
"distinct_count": null,
"min": "Hello0",
"max": "Hello999"
}
}
]
},
...
]
}