メインコンテンツへスキップ

説明

Parquet ファイルのメタデータ (https://parquet.apache.org/docs/file-format/metadata/) を読み取るための専用フォーマットです。常に、次の構造/内容を持つ 1 行を出力します。
  • num_columns - カラム数
  • “num_rows` - 行の総数
  • num_row_groups - 行グループの総数
  • format_version - Parquet フォーマットのバージョン。常に 1.0 または 2.6
  • total_uncompressed_size - データの非圧縮時の合計バイトサイズ。すべての行グループの total_byte_size の合計として計算されます
  • total_compressed_size - データの圧縮時の合計バイトサイズ。すべての行グループの total_compressed_size の合計として計算されます
  • columns - 次の構造を持つカラムメタデータの一覧:
    • name - カラム名
    • path - カラムパス (ネストされたカラムでは name と異なります)
    • max_definition_level - 最大 definition level
    • max_repetition_level - 最大 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 - 次の構造を持つカラム chunk メタデータの一覧:
      • name - カラム名
      • path - カラムパス
      • total_compressed_size - カラムの圧縮時の合計バイトサイズ
      • total_uncompressed_size - 行グループの非圧縮時の合計バイトサイズ
      • have_statistics - カラム chunk のメタデータにカラム STATISTICS が含まれているかどうかを示すブールフラグ
      • statistics - カラム chunk の統計情報 (have_statistics = false の場合、すべてのフィールドは NULL です) 。次の構造を持ちます:
        • num_values - カラム chunk 内の非 null 値の数
        • null_count - カラム chunk 内の NULL 値の数
        • distinct_count - カラム chunk 内の一意な値の数
        • min - カラム chunk の最小値
        • max - カラム chunk の最大値

使用例

例:
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"
                    }
                }
            ]
        },
        ...
    ]
}
最終更新日 2026年6月10日