查询与分析

使用 DuckDB SQL 查询采集到的数据集并生成分析报告

概述

使用数据集管道采集数据后,可以用 DuckDB 驱动的 SQL 对其进行查询。 这会直接作用于管道写入的 Parquet 文件 — 不需要额外的数据库。

需要 data 可选依赖包:pip install "anysite-cli[data]"

SQL 查询

anysite dataset query dataset.yaml \
  --sql "SELECT name, headline FROM profiles LIMIT 10"

# From a .sql file instead of --sql
anysite dataset query dataset.yaml --file report.sql

查询指定数据源

--source 会为您自动生成 SELECT 语句,并与 --fields(支持点号表示法)或 --exclude 组合使用:

anysite dataset query dataset.yaml \
  --source profiles \
  --fields "name, headline, urn.value AS id"

--fields 和 --exclude 互斥;两者同时给出时以 --fields 为准。

复杂查询

# Aggregation
anysite dataset query dataset.yaml \
  --sql "SELECT industry, COUNT(*) as count FROM companies GROUP BY industry ORDER BY count DESC"

# Joins across sources
anysite dataset query dataset.yaml \
  --sql "
    SELECT p.name, p.headline, c.name as company
    FROM profiles p
    JOIN employees e ON p.urn_value = e.urn_value
    JOIN companies c ON e.company_id = c.urn_value
    LIMIT 20
  "

# Filtering
anysite dataset query dataset.yaml \
  --sql "SELECT * FROM profiles WHERE headline LIKE '%CTO%' OR headline LIKE '%CEO%'"

交互模式

anysite dataset query dataset.yaml --interactive

打开一个将所有数据集数据源注册为视图的 DuckDB shell,方便用纯 SQL 探索数据。

列统计

dataset stats 针对单个数据源运行,报告按列的统计信息:总行数、非空值数量、空值数量、 不同值数量,以及对于数值列还会给出最小值、最大值和平均值。

# Defaults to the first source if --source is omitted
anysite dataset stats dataset.yaml --source profiles

数据集概况

dataset profile 会在管道的所有数据源上运行,报告数据源级别的质量指标:记录数、列数,以及 完整度(所有列中非空值所占的百分比)。它不接受 --source,也不计算按列的统计信息。

anysite dataset profile dataset.yaml

输出格式

查询、统计和概况结果支持相同的输出格式:

# Table (default)
anysite dataset query dataset.yaml --sql "SELECT * FROM profiles LIMIT 5" --format table

# CSV export
anysite dataset query dataset.yaml --sql "SELECT * FROM profiles" --format csv --output report.csv

# JSON / JSONL
anysite dataset query dataset.yaml --sql "SELECT * FROM profiles" --format json
anysite dataset query dataset.yaml --sql "SELECT * FROM profiles" --format jsonl

命令参考

命令 描述
anysite dataset query <yaml> --sql "..." 对采集到的数据运行 SQL 查询
anysite dataset query <yaml> --source <id> 针对单个数据源自动生成并运行查询
anysite dataset query <yaml> --interactive 打开交互式 DuckDB SQL shell
anysite dataset stats <yaml> --source <id> 单个数据源的按列统计信息
anysite dataset profile <yaml> 整个管道范围内按数据源的质量摘要

后续步骤

Examples

查看完整的端到端工作流示例

Database Loading

将查询结果加载到持久化数据库中