news 2026/4/29 6:01:15

DeepSeek总结的DuckDB Eurostat 扩展

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek总结的DuckDB Eurostat 扩展

原文地址:https://github.com/ahuarte47/duckdb-eurostat

DuckDB Eurostat 扩展

这是什么?

这是一个 DuckDB 扩展,用于使用 SQL 从 EUROSTAT 数据库读取数据。

Eurostat 是欧盟的官方统计机构,负责提供关于欧洲经济、社会、环境等方面的高质量、可比且协调统一的统计数据。

Eurostat 与各国统计机构合作,为欧洲官方统计数据的生产制定协调统一的定义、分类和方法论。它使用各国统计机构根据协调统一标准收集的数据,计算欧盟和欧元区的汇总数据。Eurostat 通过其网站、社交媒体和其他渠道,免费向决策者和公众提供欧洲统计数据。

如何获取?

从社区加载

DuckDBEUROSTAT 扩展可作为已签名的社区扩展使用。
更多详情请访问其 DuckDB CE 网页。

要安装并加载它,您可以在 DuckDB 中运行以下 SQL 命令:

INSTALL eurostatFROMcommunity;LOADeurostat;

从源代码构建

此扩展基于 DuckDB 扩展模板。

使用示例

首先,请确保在您的 DuckDB 会话中加载了该扩展。

然后,您可以使用该扩展从 EUROSTAT 数据库读取元数据和数据集。

以下是可用的函数列表:

  • EUROSTAT_Endpoints

    返回支持的 EUROSTAT API 端点列表。

    SELECTprovider_id,organization,descriptionFROMEUROSTAT_Endpoints();┌─────────────┬──────────────┬──────────────────────────────────────────────────────┐ │ provider_id │ organization │ description │ │varcharvarcharvarchar│ ├─────────────┼──────────────┼──────────────────────────────────────────────────────┤ │ ECFIN │ DG ECFIN │ 经济与金融事务 │ │ EMPL │ DG EMPL │ 就业、社会事务与社会包容 │ │ ESTAT │ EUROSTAT │ EUROSTAT 数据库 │ │ GROW │ DG GROW │ 内部市场、产业、创业与中小企业 │ │ TAXUD │ DG TAXUD │ 税收与关税同盟 │ └─────────────┴──────────────┴──────────────────────────────────────────────────────┘
  • EUROSTAT_Dataflows

    返回 EUROSTAT 提供方所提供数据流的信息。

    SELECT*FROMEUROSTAT_Dataflows();SELECT*FROMEUROSTAT_Dataflows(providers=['ESTAT','ECFIN'],language:='en');

    您也可以按特定的数据流进行筛选:

    SELECTprovider_id,dataflow_id,class,version,labelFROMEUROSTAT_Dataflows(providers=['ESTAT'],dataflows=['DEMO_R_D2JAN'],language:='de');┌─────────────┬──────────────┬─────────┬─────────┬───────────────────────────────────────────────────────────────────┐ │ provider_id │ dataflow_id │ class │ version │ label │ │varcharvarcharvarcharvarcharvarchar│ ├─────────────┼──────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────┤ │ ESTAT │ DEMO_R_D2JAN │ dataset │1.0│ 按年龄、性别和 NUTS-2区域划分的11日人口数据 │ └─────────────┴──────────────┴─────────┴─────────┴───────────────────────────────────────────────────────────────────┘
  • EUROSTAT_DataStructure

    返回 EUROSTAT 数据流的数据结构信息。

    SELECTprovider_id,dataflow_id,position,dimension,conceptFROMEUROSTAT_DataStructure('ESTAT','DEMO_R_D2JAN',language:='en');┌─────────────┬──────────────┬──────────┬─────────────┬─────────────────────────────────┐ │ provider_id │ dataflow_id │ position │ dimension │ concept │ │varcharvarchar│ int32 │varcharvarchar│ ├─────────────┼──────────────┼──────────┼─────────────┼─────────────────────────────────┤ │ ESTAT │ DEMO_R_D2JAN │1│ freq │ 时间频率 │ │ ESTAT │ DEMO_R_D2JAN │2│ unit │ 计量单位 │ │ ESTAT │ DEMO_R_D2JAN │3│ sex │ 性别 │ │ ESTAT │ DEMO_R_D2JAN │4│ age │ 年龄组 │ │ ESTAT │ DEMO_R_D2JAN │5│ geo │ 地理政治实体(报告单位) │ │ ESTAT │ DEMO_R_D2JAN │-1│ geo_level │ NUTS 分类层级 │ │ ESTAT │ DEMO_R_D2JAN │6│ time_period │ 时间 │ └─────────────┴──────────────┴──────────┴─────────────┴─────────────────────────────────┘

    geo_level维度并非数据流源的一部分,而是根据geo维度的值计算得出的。
    更多细节请参见下面的函数 EUROSTAT_GetGeoLevelFromGeoCode。

  • EUROSTAT_Read

    读取 EUROSTAT 数据流的数据集。

    SELECT*FROMEUROSTAT_Read('ESTAT','DEMO_R_D2JAN')LIMIT5;┌─────────┬─────────┬─────────┬─────────┬─────────┬───────────┬─────────────┬───────────────────┐ │ freq │ unit │ sex │ age │ geo │ geo_level │ TIME_PERIOD │ observation_value │ │varcharvarcharvarcharvarcharvarcharvarcharvarchardouble│ ├─────────┼─────────┼─────────┼─────────┼─────────┼───────────┼─────────────┼───────────────────┤ │ A │ NR │ F │ TOTAL │ AL │ country │20001526762.0│ │ A │ NR │ F │ TOTAL │ AL │ country │20011535822.0│ │ A │ NR │ F │ TOTAL │ AL │ country │20021532563.0│ │ A │ NR │ F │ TOTAL │ AL │ country │20031526180.0│ │ A │ NR │ F │ TOTAL │ AL │ country │20041520481.0│ └─────────┴─────────┴─────────┴─────────┴─────────┴───────────┴─────────────┴───────────────────┘

    该扩展支持对维度的 T-SQL 过滤器进行下推,这些过滤器会被编码并发送到 EUROSTAT API,以便在数据加载到 DuckDB 之前进行筛选。

    EUROSTAT API 仅支持对维度进行相等条件(例如WHERE geo = 'DE')或 IN 条件(例如WHERE geo IN ('DE', 'FR'))的筛选。其他类型的过滤器(例如WHERE geo LIKE 'D%')不受支持,将在数据加载后于 DuckDB 本地进行评估。

    时间过滤器(例如WHERE time_period >= '2000' AND time_period <= '2010')也受支持,并将被编码为 EUROSTAT API 中的范围过滤器。

    geo_level维度不是数据流源的一部分,而是根据geo维度的值计算得出的。您也可以对其进行筛选(例如WHERE geo_level = 'country'),但这将在数据加载后于 DuckDB 本地进行评估。

  • EUROSTAT_GetGeoLevelFromGeoCode

    标量函数,根据 NUTS 分类中的地理代码返回其层级,或判断其是否为聚合区域。

    SELECTEUROSTAT_GetGeoLevelFromGeoCode('DE');-- 返回 'country'SELECTEUROSTAT_GetGeoLevelFromGeoCode('DE1');-- 返回 'nuts1'SELECTEUROSTAT_GetGeoLevelFromGeoCode('DE12');-- 返回 'nuts2'SELECTEUROSTAT_GetGeoLevelFromGeoCode('DE123');-- 返回 'nuts3'SELECTEUROSTAT_GetGeoLevelFromGeoCode('DE_DEL1');-- 返回 'city'SELECTEUROSTAT_GetGeoLevelFromGeoCode('EU27_2020');-- 返回 'aggregate'

    EUROSTAT_Read函数使用此标量函数将geo_level维度作为普通列添加。

    支持的层级有:

    • aggregate(聚合区域)
    • country(国家)
    • nuts1(NUTS 1 级区域)
    • nuts2(NUTS 2 级区域)
    • nuts3(NUTS 3 级区域)
    • city(城市)

    关于geo_level的更多细节,请参见此处。

支持的函数与文档

完整的函数列表及其文档可在 函数参考 中找到。

如何构建它?

依赖项

您需要 CMake(版本 3.5 或更高)和一个兼容 C++14 的编译器。

我们强烈建议您安装 Ninja,您可以在构建时通过设置环境变量GEN=ninja来选用它。

gitclone --recurse-submodules https://github.com/ahuarte47/duckdb-eurostatcdduckdb-eurostatmakerelease

然后,您可以调用已构建的 DuckDB(其中已静态链接了扩展):

./build/release/duckdb

更多选项请参阅 Makefile,或查看扩展模板文档以了解更多细节。

运行测试

可以为 DuckDB 扩展创建不同的测试。测试 DuckDB 扩展的主要方式应该是./test/sql中的 SQL 测试。这些 SQL 测试可以通过以下命令运行:

maketest

安装已部署的二进制文件

要从 S3 安装您的扩展二进制文件,您需要做两件事。首先,启动 DuckDB 时应将allow_unsigned_extensions选项设置为 true。设置方式取决于您使用的客户端。以下是一些示例:

CLI:

duckdb -unsigned

Python:

con=duckdb.connect(':memory:',config={'allow_unsigned_extensions':'true'})

NodeJS:

db=newduckdb.Database(':memory:',{"allow_unsigned_extensions":"true"});

其次,您需要将 DuckDB 中的存储库端点设置为您的存储桶的 HTTP URL + 您想要安装的扩展版本。为此,请在 DuckDB 中运行以下 SQL 查询:

SETcustom_extension_repository='bucket.s3.eu-west-1.amazonaws.com/<your_extension_name>/latest';

请注意,/latest路径将允许您安装适用于当前 DuckDB 版本的最新扩展版本。要指定特定版本,您可以传递版本号。

完成这些步骤后,您可以使用 DuckDB 中常规的 INSTALL/LOAD 命令来安装和加载您的扩展:

INSTALL eurostat;LOADeurostat;

祝您使用愉快!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 11:59:49

一键部署Qwen3-ASR-0.6B:打造你的私人语音助手

一键部署Qwen3-ASR-0.6B&#xff1a;打造你的私人语音助手 1. 为什么你需要一个轻量又聪明的语音识别助手&#xff1f; 你有没有过这些时刻&#xff1a; 开会时录音记了半小时&#xff0c;回听整理却花了两小时&#xff1b; 客户发来一段方言口音浓重的语音&#xff0c;转文字…

作者头像 李华
网站建设 2026/4/18 7:53:01

深求·墨鉴使用技巧:提升手写笔记识别准确率

深求墨鉴使用技巧&#xff1a;提升手写笔记识别准确率 1. 为什么手写笔记识别总是“差一点”&#xff1f; 你有没有过这样的经历&#xff1a; 拍下一页密密麻麻的课堂笔记&#xff0c;满怀期待地点击「研墨启笔」&#xff0c;结果生成的文字里—— “微积分”变成了“微积风”…

作者头像 李华
网站建设 2026/4/18 8:52:03

文脉定序应用实践:客服工单知识匹配中重排序模块降低误判率42%

文脉定序应用实践&#xff1a;客服工单知识匹配中重排序模块降低误判率42% 1. 项目背景与挑战 在客服工单处理场景中&#xff0c;知识匹配的准确性直接关系到问题解决效率和客户满意度。传统的关键词匹配和基础向量检索虽然能够快速找到相关文档&#xff0c;但经常出现"…

作者头像 李华
网站建设 2026/4/18 7:52:59

SenseVoice-Small ONNX模型绿色计算:语音识别任务碳足迹测算与优化

SenseVoice-Small ONNX模型绿色计算&#xff1a;语音识别任务碳足迹测算与优化 1. 语音识别模型的碳足迹挑战 语音识别技术在日常生活中的应用越来越广泛&#xff0c;从智能助手到客服系统&#xff0c;从会议转录到语音输入&#xff0c;无处不在的语音识别服务背后是巨大的计…

作者头像 李华
网站建设 2026/4/18 8:40:55

YOLO12性能实测:注意力架构带来的精度飞跃

YOLO12性能实测&#xff1a;注意力架构带来的精度飞跃 1. 引言&#xff1a;为什么这次升级值得你关注&#xff1f; 你是否遇到过这样的困扰&#xff1a;在工业质检场景中&#xff0c;微小缺陷漏检率高&#xff1b;在自动驾驶视频流里&#xff0c;密集车辆检测框重叠严重&…

作者头像 李华
网站建设 2026/4/18 7:59:04

开箱即用!Ollama部署Llama-3.2-3B的完整教程

开箱即用&#xff01;Ollama部署Llama-3.2-3B的完整教程 想快速体验一个功能强大的开源大模型&#xff0c;但又担心复杂的安装配置和环境依赖&#xff1f;今天&#xff0c;我们就来手把手教你&#xff0c;如何在几分钟内&#xff0c;通过Ollama这个“神器”&#xff0c;零门槛…

作者头像 李华