[
  {
    "title": "当 Agent 成为主角，人类用什么界面保持控制权？",
    "abstract": [
      "AI Agent 时代，GUI 与 CLI 的争论从未真正结束——但争论的焦点已经悄悄换了。"
    ],
    "tags": [
      "ai",
      "idea"
    ],
    "categories": [
      "AI"
    ],
    "date": "2026-05-01 00:12:57",
    "url": "https://blog.kpretty.tech/p/a2e316cc.html"
  },
  {
    "title": "GLM-4.5 & Dify：零成本构建 PostAI",
    "abstract": [
      "本文介绍如何零成本把 GLM-4.5-Flash 和 Dify 组合成博客专属 AI「PostAI」：hexo 生成 posts-meta.json 提供实时元数据，jina reader 免费抓取全文，两接口接入 Dify Agent，提示词限定“边想边做”三步走（最新/指定/关键词），直接嵌 iframe 进站点，三分钟搞定智能客服+搜索+摘要，无需向量库也免运维。"
    ],
    "tags": [
      "ai",
      "dify",
      "llm"
    ],
    "categories": [
      "AI"
    ],
    "date": "2026-01-11 09:13:57",
    "url": "https://blog.kpretty.tech/p/bc3c81e2.html"
  },
  {
    "title": "JSON数据处理新思路：深入SparkSQL复杂类型",
    "abstract": [
      "文章提出用 SparkSQL 的 Struct/Array/Map 复杂类型直接承载嵌套 JSON，无需提前扁平化：先用 schema_of_json 推断结构，再用 from_json 按最小 schema 抽取所需字段，配合高阶函数过滤聚合，最后用 named_struct+collect_list+to_json 反向封装成 JSON，实现“解析不拆字段、输出不拼字符串”，代码更短、性能更好、易维护。"
    ],
    "tags": [
      "spark",
      "json"
    ],
    "categories": [
      "大数据"
    ],
    "date": "2026-01-07 02:13:57",
    "url": "https://blog.kpretty.tech/p/27dc26d9.html"
  },
  {
    "title": "别再让 Excel 毁了你下班前的灵感",
    "abstract": [
      "DuckDB 是数据人本地“二次分析”的火箭级工具，告别 Excel 蓝屏与百万行 CSV 折磨。它零安装即用 CLI/WASM，GB/s 读 CSV/Parquet，完整 SQL:2016 含窗口函数，可直接查 Hive 分区、Iceberg、S3，配合 Python/R 脚本和 notebook UI，500 ms 完成百万级聚合。一句话：让数据活起来，别让 Excel 毁了灵感。"
    ],
    "tags": [
      "analyze",
      "duckdb",
      "skill"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2025-09-04 02:05:06",
    "url": "https://blog.kpretty.tech/p/c13c7475.html"
  },
  {
    "title": "CoalescingMergeTree：列级合并，一行成景",
    "abstract": [
      "ClickHouse 新引擎 CoalescingMergeTree 通过列级合并实现“追加即更新”，只回填非 NULL 字段，避免整行覆盖，适合超大宽表局部分批更新场景。文章以用户画像三域（基础/行为/价值）为例，完整演示建表、物化视图与更新流程，并给出与 ReplacingMergeTree 的对比及乱序写入注意事项。"
    ],
    "tags": [
      "clickhouse",
      "skill"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2025-08-28 01:10:06",
    "url": "https://blog.kpretty.tech/p/85793ab4.html"
  },
  {
    "title": "可刷新物化视图",
    "abstract": [
      "可刷新物化视图是 ClickHouse 24.10 版本推出的用于解决增量物化视图不适用场景的方案，适用于对数据新鲜度要求不高但需加速复杂 SQL 查询的场景。增量物化视图作为主表 insert 事件的触发器，只有主表数据插入时才会更新，从表数据变化无法触发更新，在多表 join 或 union 场景以及维表关联场景中存在局限性。而可刷新物化视图通过指定刷新周期，在调度时间到达时完整执行定义的 SQL 并覆盖结果，其整体架构涵盖数据源、查询引擎、临时存储、原子替换等环节，刷新执行流程包含触发调度、执行查询、临时存储、数据校验、原子替换和清理资源等步骤，调度机制有固定时间调度、延迟调度和手动触发三种方式，还支持固定时间周期的随机刷新。此外，可刷新物化视图可通过特定指令进行管理，如强制触发刷新、停止或启动调度、取消刷新任务、更新调度时间以及查看调度任务等。与增量物化视图、定时 ETL 和实时流处理相比，可刷新物化视图在 SQL 功能支持、开发复杂度、运维复杂度、数据一致性等方面表现良好，其实时性为分钟级别，资源消耗中等，相当于 ClickHouse 内置的 ETL 工具。不过，每次调度都是全量数据执行过程，需合理考虑资源与调度周期。"
    ],
    "tags": [
      "clickhouse",
      "skill"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2025-07-08 00:45:06",
    "url": "https://blog.kpretty.tech/p/3cf62ee5.html"
  },
  {
    "title": "辛普森悖论的量化根因",
    "abstract": [
      "本文通过 LMDI 分解法量化分析辛普森悖论，深入探究子页面粘性降低但整体粘性增长的矛盾现象。文章详细阐述了如何利用群体、结构和交互效应，结合 SQL 实现数据分解，揭示用户结构变化对整体指标的影响。最终，借助AI技术生成专业报告，以清晰、直观的方式向业务团队解释了这一复杂现象，为业务决策提供了有力支持。"
    ],
    "tags": [
      "skill",
      "idea"
    ],
    "categories": [
      "其它"
    ],
    "date": "2025-06-29 06:57:45",
    "url": "https://blog.kpretty.tech/p/99aef10e.html"
  },
  {
    "title": "基于 metabase + clickhouse 的流量分析",
    "abstract": [
      "本文介绍了一个基于 nginx + clickhouse 的流量分析方案，主要解决了博客 51la 统计无法分析全站流量的问题。使用 vector 采集 nginx 日志，通过 clickhouse 进行数据存储和分析，再利用 metabase 搭建实时报表，最终实现了对全站流量的实时监控和分析，为异常流量检测提供数据支持。"
    ],
    "tags": [
      "clickhouse",
      "metabase",
      "nginx",
      "analysis"
    ],
    "categories": [
      "实验项目"
    ],
    "date": "2025-06-08 22:41:17",
    "url": "https://blog.kpretty.tech/p/3a240ecc.html"
  },
  {
    "title": "TTL——管理 clickhouse 数据的生命周期",
    "abstract": [
      "这篇文章介绍了ClickHouse数据库中数据的生命周期管理，特别是使用TTL工具来删除、移动和聚合数据。文章首先讨论了如何删除数据，包括删除整行数据、带条件的删除以及删除指标列。然后，探讨了如何将数据移动到其他表或卷中。接下来，讲述了数据的聚合和改变压缩方式。文章解释了TTL工具的工作原理，它如何在DDL子句中配置以自动完成后台的数据删除任务。文章还展示了如何通过在DDL中添加TTL策略来自动删除过期数据，并说明了TTL策略可以支持where子句来指定删除特定记录的条件。最后，指出ClickHouse允许执行多个TTL语句，以便更灵活地确定删除内容和条件。"
    ],
    "tags": [
      "clickhouse",
      "ttl"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2025-05-31 02:45:06",
    "url": "https://blog.kpretty.tech/p/b7172a68.html"
  },
  {
    "title": "ClickHouse 查询缓存",
    "abstract": [
      "这篇文章介绍了ClickHouse查询缓存的相关内容，包括缓存一致性问题、查询缓存实操以及进阶知识。文章首先讨论了事务一致和事务不一致缓存的概念，然后通过实际操作演示了如何在ClickHouse中启用查询缓存。文章还详细介绍了缓存配置的各种选项，如更精细的缓存控制、缓存时间控制、缓存大小控制等。最后，文章通过一个实例展示了查询缓存在实际应用中的效果。总之，这篇文章为读者提供了关于ClickHouse查询缓存的全面了解。"
    ],
    "tags": [
      "clickhouse",
      "cache"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2025-05-31 02:29:11",
    "url": "https://blog.kpretty.tech/p/9498adf0.html"
  },
  {
    "title": "Clickhouse 的 Kafka 表引擎",
    "abstract": [
      "这篇文章介绍了ClickHouse-Kafka Engine的正确使用方式，包括如何使用Kafka Engine、进阶使用方法，以及新的Kafka Engine的特性和新老引擎的对比。文章详细阐述了如何实现与Kafka的深度融合，优雅处理解析错误数据和重复消费问题，并在ClickHouse 24.8版本中引入了支持exactly once语义的新Kafka引擎。"
    ],
    "tags": [
      "clickhouse",
      "kafka",
      "skill"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2025-03-01 19:50:29",
    "url": "https://blog.kpretty.tech/p/1808cf2d.html"
  },
  {
    "title": "SparkSQL优化的行列转换",
    "abstract": [
      "这篇文章介绍了SparkSQL中优雅的行列转换方法，重点讲解了pivot和unpivot子句的应用。文章首先描述了数据准备和传统行列转换方式（行转列、列转行），然后详细说明了pivot和unpivot在行转列及列转行中的实现。这些方法广泛应用于报表生成、数据分析等场景，能提高效率并优化性能。通过对比传统方式，pivot和unpivot在代码维护和可读性上有显著优势，并且在性能上也有提升。文章以城市GDP数据为例，展示了具体SQL实现过程。"
    ],
    "tags": [
      "spark",
      "skill"
    ],
    "categories": [
      "大数据"
    ],
    "date": "2025-02-08 22:41:17",
    "url": "https://blog.kpretty.tech/p/45108542.html"
  },
  {
    "title": "Bitmap 在数仓中的应用",
    "abstract": [
      "这篇文章介绍了Bitmap在数仓中的应用。Bitmap是一种用“0”和“1”记录信息的数据结构，通过位的形式将数据高效地压缩存储，同时支持快速的集合运算。文章从Bitmap的基础构成和核心操作出发，详细解释了Bitmap的交、并、补、差等操作，并探讨了其在高基数去重、行为统计、快速筛选等场景中的应用。文章还提到了Bitmap在生产中的集成，如集成Spark/Hive，并以实际案例为例，展示了Bitmap在数据仓库中的应用场景和实现方式。同时，文章也讨论了Bitmap的痛点及其优化，如RoaringBitmap、Roaring64Bitmap和Roaring64NavigableMap等。"
    ],
    "tags": [
      "spark",
      "bitmap"
    ],
    "categories": [
      "大数据"
    ],
    "date": "2024-12-16 00:03:59",
    "url": "https://blog.kpretty.tech/p/d261c272.html"
  },
  {
    "title": "醉意下的真实——十年软件工程师的深夜独白",
    "abstract": [
      "这篇文章介绍了一个资深软件工程师醉酒后的心得体会，他毫无顾忌地分享了一些观点。作者声明这些观点不完全代表自己的观点，部分观点他也不认同。他只是进行了翻译和适当调整，如有侵权请联系作者。读者如果对某些观点感到无法接受，可以立即关闭。"
    ],
    "tags": [
      "translation"
    ],
    "categories": [
      "其它"
    ],
    "date": "2024-11-16 02:57:45",
    "url": "https://blog.kpretty.tech/p/8738e0ed.html"
  },
  {
    "title": "ClickHouse 多种删除操作",
    "abstract": [
      "这篇文章介绍了在ClickHouse中实现数据删除的几种方法，包括mutation、mergeTree和lightweight操作，以及它们的原理和不足之处。文章旨在帮助读者理解ClickHouse数据库在数据删除方面的技术突破和实际应用。"
    ],
    "tags": [
      "clickhouse",
      "skill"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2024-10-09 20:45:06",
    "url": "https://blog.kpretty.tech/p/74577b67.html"
  },
  {
    "title": "三年 Sparker 都不一定知道的算子内幕",
    "abstract": [
      "这篇文章介绍了Spark中一些不为人知的内部细节和操作。首先，文章探讨了如何在mapPartitions操作中正确释放资源，其次比较了reduceByKey和groupByKey的区别，接着讨论了Spark中全局有序性的问题，然后介绍了多种rePartition操作，最后讲述了广播变量的多种实现方式。文章通过具体的案例和伪代码，深入剖析了这些问题，并提出了解决方案。"
    ],
    "tags": [
      "spark",
      "skill"
    ],
    "categories": [
      "大数据"
    ],
    "date": "2024-09-18 00:03:59",
    "url": "https://blog.kpretty.tech/p/260ad51e.html"
  },
  {
    "title": "因精度丢失导致的 join 数据异常",
    "abstract": [
      "这篇文章介绍了在ClickHouse中实现数据删除的几种方法，包括mutation、mergeTree和lightweight操作，以及它们的原理和不足之处。文章旨在帮助读者理解ClickHouse数据库在数据删除方面的技术突破和实际应用。"
    ],
    "tags": [
      "hive",
      "join",
      "problem"
    ],
    "categories": [
      "大数据"
    ],
    "date": "2024-08-19 16:45:06",
    "url": "https://blog.kpretty.tech/p/c9ab2e5.html"
  },
  {
    "title": "ClickHouse 查询缓存",
    "abstract": [
      "这篇文章介绍了ClickHouse查询缓存的相关内容，包括缓存一致性问题、查询缓存实操以及进阶功能。ClickHouse的查询缓存在v23.1版本中作为实验性特性推出，支持事务一致和事务不一致两种缓存模式。事务一致缓存适用于OLTP数据库，而事务不一致缓存则更适合OLAP数据库。文章还详细讲解了缓存配置的多个方面，如精细控制、时间控制、大小控制等，并通过实例展示了如何利用查询缓存提升查询效率。"
    ],
    "tags": [
      "clickhouse",
      "skill",
      "cache"
    ],
    "categories": [
      "数据库"
    ],
    "date": "2024-04-01 20:45:06",
    "url": "https://blog.kpretty.tech/p/9498adf0.html"
  }
]