查询数据集
查询数据集是数据分析中的一个基本步骤。在这里,我们将指导您使用各种方法查询数据集。
有 几种方法 可以选择您的数据。
使用 FROM
语法
FROM 'hf://datasets/jamescalam/world-cities-geo/train.jsonl' SELECT city, country, region LIMIT 3;
┌────────────────┬─────────────┬───────────────┐
│ city │ country │ region │
│ varchar │ varchar │ varchar │
├────────────────┼─────────────┼───────────────┤
│ Kabul │ Afghanistan │ Southern Asia │
│ Kandahar │ Afghanistan │ Southern Asia │
│ Mazar-e Sharif │ Afghanistan │ Southern Asia │
└────────────────┴─────────────┴───────────────┘
使用 SELECT
和 FROM
语法
SELECT city, country, region FROM 'hf://datasets/jamescalam/world-cities-geo/train.jsonl' USING SAMPLE 3;
┌──────────┬─────────┬────────────────┐
│ city │ country │ region │
│ varchar │ varchar │ varchar │
├──────────┼─────────┼────────────────┤
│ Wenzhou │ China │ Eastern Asia │
│ Valdez │ Ecuador │ South America │
│ Aplahoue │ Benin │ Western Africa │
└──────────┴─────────┴────────────────┘
统计所有匹配 glob 模式的 JSONL 文件
SELECT COUNT(*) FROM 'hf://datasets/jamescalam/world-cities-geo/*.jsonl';
┌──────────────┐
│ count_star() │
│ int64 │
├──────────────┤
│ 9083 │
└──────────────┘
您还可以使用 read_parquet
函数(或其别名 parquet_scan
)查询 Parquet 文件。此函数以及其他 参数 提供了灵活处理 Parquet 文件的方法,尤其是在它们没有 .parquet
扩展名的情况下。让我们使用来自同一数据集的自动转换的 Parquet 文件来探索这些函数。
使用 read_parquet 函数进行选择
SELECT * FROM read_parquet('hf://datasets/jamescalam/world-cities-geo@~parquet/default/**/*.parquet') LIMIT 3;
┌────────────────┬─────────────┬───────────────┬───────────┬────────────┬────────────┬────────────────────┬───────────────────┬────────────────────┐
│ city │ country │ region │ continent │ latitude │ longitude │ x │ y │ z │
│ varchar │ varchar │ varchar │ varchar │ double │ double │ double │ double │ double │
├────────────────┼─────────────┼───────────────┼───────────┼────────────┼────────────┼────────────────────┼───────────────────┼────────────────────┤
│ Kabul │ Afghanistan │ Southern Asia │ Asia │ 34.5166667 │ 69.1833344 │ 1865.546409629258 │ 4906.785732164055 │ 3610.1012966606136 │
│ Kandahar │ Afghanistan │ Southern Asia │ Asia │ 31.61 │ 65.6999969 │ 2232.782351694877 │ 4945.064042683584 │ 3339.261233224765 │
│ Mazar-e Sharif │ Afghanistan │ Southern Asia │ Asia │ 36.7069444 │ 67.1122208 │ 1986.5057687360124 │ 4705.51748048584 │ 3808.088900172991 │
└────────────────┴─────────────┴───────────────┴───────────┴────────────┴────────────┴────────────────────┴───────────────────┴────────────────────┘
读取所有匹配 glob 模式的文件,并包含一个文件名列,指定每行来自哪个文件
SELECT city, country, filename FROM read_parquet('hf://datasets/jamescalam/world-cities-geo@~parquet/default/**/*.parquet', filename = true) LIMIT 3;
┌────────────────┬─────────────┬───────────────────────────────────────────────────────────────────────────────┐
│ city │ country │ filename │
│ varchar │ varchar │ varchar │
├────────────────┼─────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ Kabul │ Afghanistan │ hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet │
│ Kandahar │ Afghanistan │ hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet │
│ Mazar-e Sharif │ Afghanistan │ hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet │
└────────────────┴─────────────┴───────────────────────────────────────────────────────────────────────────────┘
获取元数据和模式
可以使用 parquet_metadata 函数查询 Parquet 文件中包含的元数据。
SELECT * FROM parquet_metadata('hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet');
┌───────────────────────────────────────────────────────────────────────────────┬──────────────┬────────────────────┬─────────────┐
│ file_name │ row_group_id │ row_group_num_rows │ compression │
│ varchar │ int64 │ int64 │ varchar │
├───────────────────────────────────────────────────────────────────────────────┼──────────────┼────────────────────┼─────────────┤
│ hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet │ 0 │ 1000 │ SNAPPY │
│ hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet │ 0 │ 1000 │ SNAPPY │
│ hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet │ 0 │ 1000 │ SNAPPY │
└───────────────────────────────────────────────────────────────────────────────┴──────────────┴────────────────────┴─────────────┘
获取列名和列类型
DESCRIBE SELECT * FROM 'hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet';
┌─────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┐
│ column_name │ column_type │ null │ key │ default │ extra │
│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │
├─────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┤
│ city │ VARCHAR │ YES │ │ │ │
│ country │ VARCHAR │ YES │ │ │ │
│ region │ VARCHAR │ YES │ │ │ │
│ continent │ VARCHAR │ YES │ │ │ │
│ latitude │ DOUBLE │ YES │ │ │ │
│ longitude │ DOUBLE │ YES │ │ │ │
│ x │ DOUBLE │ YES │ │ │ │
│ y │ DOUBLE │ YES │ │ │ │
│ z │ DOUBLE │ YES │ │ │ │
└─────────────┴─────────────┴─────────┴─────────┴─────────┴─────────┘
获取内部模式(不包括文件名)
SELECT * EXCLUDE (file_name) FROM parquet_schema('hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet');
┌───────────┬────────────┬─────────────┬─────────────────┬──────────────┬────────────────┬───────┬───────────┬──────────┬──────────────┐
│ name │ type │ type_length │ repetition_type │ num_children │ converted_type │ scale │ precision │ field_id │ logical_type │
│ varchar │ varchar │ varchar │ varchar │ int64 │ varchar │ int64 │ int64 │ int64 │ varchar │
├───────────┼────────────┼─────────────┼─────────────────┼──────────────┼────────────────┼───────┼───────────┼──────────┼──────────────┤
│ schema │ │ │ REQUIRED │ 9 │ │ │ │ │ │
│ city │ BYTE_ARRAY │ │ OPTIONAL │ │ UTF8 │ │ │ │ StringType() │
│ country │ BYTE_ARRAY │ │ OPTIONAL │ │ UTF8 │ │ │ │ StringType() │
│ region │ BYTE_ARRAY │ │ OPTIONAL │ │ UTF8 │ │ │ │ StringType() │
│ continent │ BYTE_ARRAY │ │ OPTIONAL │ │ UTF8 │ │ │ │ StringType() │
│ latitude │ DOUBLE │ │ OPTIONAL │ │ │ │ │ │ │
│ longitude │ DOUBLE │ │ OPTIONAL │ │ │ │ │ │ │
│ x │ DOUBLE │ │ OPTIONAL │ │ │ │ │ │ │
│ y │ DOUBLE │ │ OPTIONAL │ │ │ │ │ │ │
│ z │ DOUBLE │ │ OPTIONAL │ │ │ │ │ │ │
├───────────┴────────────┴─────────────┴─────────────────┴──────────────┴────────────────┴───────┴───────────┴──────────┴──────────────┤
获取统计信息
可以使用 SUMMARIZE
命令获取查询的各种聚合(最小值、最大值、近似唯一值、平均值、标准差、q25、q50、q75、计数)。它将这些统计信息与列名、列类型和 NULL 值的百分比一起返回。
SUMMARIZE SELECT latitude, longitude FROM 'hf://datasets/jamescalam/world-cities-geo@~parquet/default/train/0000.parquet';
┌─────────────┬─────────────┬──────────────┬─────────────┬───────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┬───────┬─────────────────┐
│ column_name │ column_type │ min │ max │ approx_unique │ avg │ std │ q25 │ q50 │ q75 │ count │ null_percentage │
│ varchar │ varchar │ varchar │ varchar │ int64 │ varchar │ varchar │ varchar │ varchar │ varchar │ int64 │ decimal(9,2) │
├─────────────┼─────────────┼──────────────┼─────────────┼───────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┼───────┼─────────────────┤
│ latitude │ DOUBLE │ -54.8 │ 67.8557214 │ 7324 │ 22.5004568364307 │ 26.770454684690925 │ 6.089858461951687 │ 29.321258648324747 │ 44.90191158328915 │ 9083 │ 0.00 │
│ longitude │ DOUBLE │ -175.2166595 │ 179.3833313 │ 7802 │ 14.699333721953098 │ 63.93672742608224 │ -6.877990418604821 │ 19.12963979385393 │ 43.873513093419966 │ 9083 │ 0.00 │
└─────────────┴─────────────┴──────────────┴─────────────┴───────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┴───────┴─────────────────┘