Description
Format spécial pour lire les métadonnées d’un fichier Parquet (https://parquet.apache.org/docs/file-format/metadata/). Il produit toujours une ligne avec la structure/le contenu suivants :
num_columns- le nombre de colonnes- ``num_rows` - le nombre total de lignes
num_row_groups- le nombre total de groupes de lignesformat_version- la version du format Parquet, toujours 1.0 ou 2.6total_uncompressed_size- la taille totale des données non compressées en octets, calculée comme la somme de total_byte_size de tous les groupes de lignestotal_compressed_size- la taille totale des données compressées en octets, calculée comme la somme de total_compressed_size de tous les groupes de lignescolumns- la liste des métadonnées des colonnes avec la structure suivante :name- le nom de la colonnepath- le chemin de la colonne (diffère du nom pour une colonne imbriquée)max_definition_level- le niveau de définition maximalmax_repetition_level- le niveau de répétition maximalphysical_type- le type physique de la colonnelogical_type- le type logique de la colonnecompression- la compression utilisée pour cette colonnetotal_uncompressed_size- la taille totale non compressée de la colonne en octets, calculée comme la somme de total_uncompressed_size de la colonne dans tous les groupes de lignestotal_compressed_size- la taille totale compressée de la colonne en octets, calculée comme la somme de total_compressed_size de la colonne dans tous les groupes de lignesspace_saved- le pourcentage d’espace économisé grâce à la compression, calculé comme (1 - total_compressed_size/total_uncompressed_size).encodings- la liste des encodages utilisés pour cette colonne
row_groups- la liste des métadonnées des groupes de lignes avec la structure suivante :num_columns- le nombre de colonnes dans le groupe de lignesnum_rows- le nombre de lignes dans le groupe de lignestotal_uncompressed_size- la taille totale non compressée du groupe de lignes en octetstotal_compressed_size- la taille totale compressée du groupe de lignes en octetscolumns- la liste des métadonnées des fragments de colonnes avec la structure suivante :name- le nom de la colonnepath- le chemin de la colonnetotal_compressed_size- la taille totale compressée de la colonne en octetstotal_uncompressed_size- la taille totale non compressée du groupe de lignes en octetshave_statistics- un indicateur booléen qui indique si les métadonnées du fragment de colonne contiennent des statistiques de colonnestatistics- les statistiques du fragment de colonne (tous les champs sont NULL si have_statistics = false) avec la structure suivante :num_values- le nombre de valeurs non NULL dans le fragment de colonnenull_count- le nombre de valeurs NULL dans le fragment de colonnedistinct_count- le nombre de valeurs distinctes dans le fragment de colonnemin- la valeur minimale du fragment de colonnemax- la valeur maximale du fragment de colonne
Exemple d’utilisation
Exemple :
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"
}
}
]
},
...
]
}