duckdb_创建新的数据类型作为检查的方式

数据新思路

将标注数据,通过read_json的方式读取出来,通过 unnest 把数据分解成多行
根据enum创建表-- crate type
将数据写入到表中 merge into
  对标注数据进行校验
其他命令  split_part filename  

DuckDB的复合类型系统建立在灵活的类型框架之上,

 1.允许用户通过 CREATE TYPE 语句定义自定义类型别名
  CREATE TYPE mood AS ENUM ('happy', 'sad', 'curious');
  
    CREATE TABLE person (
        name TEXT,
        current_mood mood
    );
    INSERT INTO person VALUES
        ('Pedro', 'happy'),
        ('Mark', NULL),
        ('Pagliacci', 'sad'),
        ('Mr. Mackey', 'ok');	  
##DROP TYPE enum_name;  
 DROP TYPE mood

C 语言

   在C语言中,联合(union)和枚举(enum)是两种强大的数据类型,它们为开发者提供了灵活且高效的数据管理方式
     联合体的声明语法和结构体非常相似,仅关键字不同(union 替代 struct)

duckdb

 UNION 是“或”的关系 —— 只有一个选项当前有效

bitmap-位图

 索引序号代表对应的值,bitmap默认值都为0  
 使用boolean类型来存储数据。
     例如记录用户每天签到,签到了是1,没签则为0
 功能: setbit  getbit  bitops  bitcount

RoaringBitmap是一种高效的Bitmap压缩算法,
   目前已被广泛应用在各种语言和各种大数据平台。适合计算超高基维的,常用于去重、标签筛选、时间序列等计算中	


  bit_count and bitstring_agg 
      在数据稠密 bit_count(bitstring_agg())还是比count(DISTINCT …)更快。

    传统SQL:sql
       SELECT COUNT(DISTINCT user_id) 
	   FROM events 
	   WHERE day = '2025-01-01';
    
    
    BITSTRING优化方案(假设user_id是1~10000的整数):sql 
      SELECT bit_count(bitstring_agg(user_id, 1, 10000)) AS distinct_users
      FROM events 
	  WHERE day = '2025-01-01';
	  
	历史场景: 用户id     
           限制:操作数长度必须一致,不同长度位串无法直接 &、|、xor		

分组等

窗口函数 + 子查询(标准 SQL)
   ROW_NUMBER() OVER (PARTITION BY name ORDER BY date DESC) 为每个 name 组内按日期倒序编号,最新日期的行编号为 1。
QUALIFY 是 DuckDB 对 SQL 标准的扩展,直接在窗口函数后过滤,无需嵌套子查询,可读性最佳  

观念或tips

 1.思路二: ibis python 
     Python数据类型检查体系包含基础检查、继承验证、类型注解三大层级
 2.Arrow 数据类型	

 3.AI的发展太快,新的产品的迭代太快,我们希望能追随AI的能力很迫切
   PG 有着不可动摇的速度和能力,和优势。 目前AI的部署和应用都在初级阶段
 4. Grok 是Logstash 中一个强大的正则表达式匹配库
     regexp_extract的两种调用方式,特别是name_list参数可以将捕获组按名称映射为STRUCT字段,这实际上就是Grok命名捕获的
     Grok 的本质是 “预定义的正则表达式 + 命名捕获组 + 模式复用”     		 
    简单解析用原生regexp,复杂日志生态用duck_hunt,极端定制需求用宏封装
	
5.adtk 是专门做异常检测的工具箱	 adtk(Anomaly Detection Toolkit)是无监督异常检测的python工具包

6.数据清洗:用 SQL 做“类 Git 版本管理” DuckDB 支持 CREATE TABLE AS SELECT,每清洗一次就新建一张视图,方便回滚
    数据库存储:一次写入,多读共享
    把清洗后的 Parquet 挂成 DuckDB 的 external table,后续 API 层直接 SELECT * FROM answers_clean,无需再搬
 fastapi接口	
	
7.http://github.com/0039fy/CSV-Tools-Pro/blob/main/CSV.py	
posted @ 2026-02-13 13:54  辰令  阅读(17)  评论(0)    收藏  举报