Published onAugust 17, 2022Flink × TiDB 实时 ETL 踩坑记录FlinkTiCDC本文记录了在使用Flink与TiDB进行实时ETL时遇到的异常和数据格式差异。主要讨论了Maxwell JSON消息的解析错误,特别是在DELETE消息中TiCDC与Maxwell官方数据格式的不同,指出TiCDC使用 old 字段而Maxwell使用 data 字段。提供了相关源码链接和解决方案的参考。
Published onMarch 2, 2022MySQL 左外连接查询优化记录MySQLSQL本文记录了MySQL左外连接查询的优化过程,分析了企业信息表和风险预警信息表的结构及数据量,展示了初始查询的SQL语句及其耗时,并指出了查询逻辑的错误。通过调整查询方式和添加索引,优化后的查询耗时显著降低。最终,探讨了不同连接方式对查询性能的影响,并提供了相关的MySQL文档链接作为参考。
Published onFebruary 18, 2022窗口函数 percent_rank() 和 rank() 因 order by 顺序不一致影响计算结果SQL在计算 SQL 的 percent_rank() 和 rank() 函数时,若 order by 顺序不一致,会导致结果不匹配。通过两个案例分析,发现当按升序和降序计算时, percent_rank 的结果会出现差异,正确的做法是保持两个函数按相同顺序计算。 rank 函数在存在并列名次时会产生排名间隙,这也是导致结果不一致的原因。
Published onOctober 15, 2021BI 工具中跨数据源 JOIN 设计BIRedash本文讨论了在BI工具中实现跨数据源JOIN的设计,介绍了FineBI和Redash的实现方式。FineBI通过自助数据集支持多源JOIN,而Redash则利用查询结果数据源(QRDS)实现惰性查询和临时表的使用。文中还提供了部分源码示例,展示了如何从查询语句创建SQLite临时表并执行JOIN查询。
Published onMarch 25, 2021BoostPost - Data Class 最佳(误)实践PythonData-Classes本文介绍了 BoostPost 库的设计与实现,旨在优化数据处理工作中的更新请求构建。通过示例展示了如何处理新旧数据的插入、更新和删除,强调了数据类的概念及其在 Python 中的应用。文章还探讨了逻辑删除和更新优先级等特殊场景,提供了扩展接口的实现思路,并总结了项目代码质量提升的重要性。