当前位置: 首页 > news >正文

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】6.4 时间序列分析(窗口函数处理时间数据)

👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路


文章大纲

  • PostgreSQL时间序列分析:窗口函数处理时间数据实战
    • 一、时间序列分析核心场景与窗口函数优势
      • 1.1 业务场景需求
      • 1.2 窗口函数核心优势
    • 二、窗口函数基础:时间窗口定义与语法结构
      • 2.1 时间窗口语法格式
      • 2.2 时间数据准备
    • 三、时间窗口类型深度解析
      • 3.1 固定时间间隔窗口(RANGE)
      • 3.2 物理行偏移窗口(ROWS)
      • 3.3 动态时间窗口(基于日期函数)
    • 四、复杂业务场景建模实战
      • 4.1 用户复购率分析(按周维度)
      • 4.2 实时流量监控(分钟级滑动窗口)
    • 五、性能优化与最佳实践
      • 5.1 索引优化策略
      • 5.2 大数据量处理技巧
      • 5.3 常见错误与解决方案
    • 六、总结与扩展应用
      • 6.1 技术价值
      • 6.2 扩展场景
      • 6.3 最佳实践

PostgreSQL时间序列分析:窗口函数处理时间数据实战

在数据分析领域,时间序列数据是业务场景中最常见的数据类型之一。

  • 从电商订单的时间戳到金融交易的毫秒级记录,时间维度的分析能力直接影响业务决策的质量。
  • PostgreSQL作为企业级关系型数据库,提供了强大的窗口函数体系,能够高效处理时间序列数据的复杂分析需求
  • 本文将通过具体业务场景,深入解析如何利用窗口函数实现时间数据的清洗、聚合与趋势分析。
    在这里插入图片描述

一、时间序列分析核心场景与窗口函数优势

1.1 业务场景需求

某电商平台需要分析用户订单的时间分布特征,具体包括:

  • 近30天订单金额的滚动平均值
  • 按周统计的用户复购率变化
  • 月度销售额的同比增长率
  • 实时订单的分钟级流量监控

这些需求的共同特点是需要基于时间窗口进行数据聚合,传统的分组聚合(GROUP BY)无法满足动态窗口和保留原始记录的需求,而窗口函数(Window Function)可以在不改变原有数据行的前提下,对指定时间窗口内的数据进行计算。

1.2 窗口函数核心优势

特性传统GROUP BY窗口函数
结果行数分组后行数保持原行数
窗口定义方式固定分组动态时间窗口
聚合结果引用无法引用支持当前行关联
性能表现(百万级数据)O(n log n)O(n)线性扫描

二、窗口函数基础:时间窗口定义与语法结构

2.1 时间窗口语法格式

<窗口函数>(表达式) OVER ([PARTITION BY 分组列]ORDER BY 时间列[ROWS/RANGE 窗口帧定义]
)
  • 核心参数说明:
    • PARTITION BY:按用户ID、区域等维度分组分析
    • ORDER BY:必须使用时间类型列(TIMESTAMP/TIMESTAMPTZ)
    • 窗口帧:关键参数,决定时间窗口范围
      • ROWS:基于物理行偏移量(如当前行前后10行)
      • RANGE:基于逻辑时间间隔(如当前时间前后30天)

2.2 时间数据准备

创建订单表并插入测试数据:

-- 创建表
CREATE TABLE if not exists order_logs (order_id BIGINT PRIMARY KEY,user_id INTEGER,order_time TIMESTAMP,order_amount NUMERIC(10,2)  -- 定义为NUMERIC类型存储精确小数
);-- 创建序列
CREATE SEQUENCE order_logs_order_id_seq;-- 清空表数据(如果需要重新生成数据)
TRUNCATE TABLE order_logs;-- 插入 3 个月的测试数据
INSERT INTO order_logs (order_id, user_id, order_time, order_amount)
SELECT nextval('order_logs_order_id_seq'),floor(random() * 1000 + 1),'2024-01-01'::timestamp + (random() * interval '90 days'),ROUND((random() * 1000 + 500)::NUMERIC, 2)
FROM generate_series(1, 100000);-- 添加时间索引提升性能
CREATE INDEX idx_order_time ON order_logs(order_time);

三、时间窗口类型深度解析

3.1 固定时间间隔窗口(RANGE)

  • 场景:计算每个订单的近30天滚动平均金额

    -- 方案一:使用 ROWS 替代 RANGE
    SELECT order_time,order_amount,AVG(order_amount) OVER (ORDER BY order_timeROWS BETWEEN 30 PRECEDING AND CURRENT ROW) AS rolling_30d_avg
    FROM order_logs
    ORDER BY order_time
    LIMIT 5;
    
  • 执行逻辑

      1. 按order_time排序数据
      1. 对当前行,取时间在[order_time-30天, order_time]范围内的所有行
      1. 计算窗口内订单金额的平均值
  • 数据对比表
    在这里插入图片描述

3.2 物理行偏移窗口(ROWS)

  • 场景:按用户分组,取最近5笔订单的金额总和
    SELECT user_id,order_time,order_amount,SUM(order_amount) OVER (PARTITION BY user_idORDER BY order_timeROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS last_5_orders_sum
    FROM order_logs
    WHERE user_id = 123  -- 假设用户123有10笔订单
    ORDER BY order_time;
    
  • 关键区别
    • ROWS窗口基于排序后的物理行位置,与时间间隔无关
    • 适合处理订单流水号、事件编号等有序但时间间隔不固定的场景
      在这里插入图片描述

3.3 动态时间窗口(基于日期函数)

场景:按自然周统计每周销售额及环比增长率

-- 使用 CTE(公共表表达式)定义一个名为 weekly_sales 的临时结果集
WITH weekly_sales AS (-- 从 order_logs 表中选择需要的列SELECT -- 使用 date_trunc 函数将 order_time 截断到周的起始时间,作为每周的开始时间date_trunc('week', order_time) AS week_start,-- 对每个周内的订单金额进行求和,得到每周的销售总额SUM(order_amount) AS weekly_totalFROM -- 从 order_logs 表中获取数据order_logs-- 按照 week_start 进行分组,以便计算每个周的销售总额GROUP BY week_start-- 按照 week_start 对结果进行排序,保证结果按周的先后顺序排列ORDER BY week_start
)
-- 从 weekly_sales 临时结果集中选择需要的列
SELECT -- 每周的开始时间week_start,-- 每周的销售总额weekly_total,-- 计算每周销售总额的增长金额-- 使用 LAG 窗口函数获取上一周的销售总额,然后用当前周的销售总额减去上一周的销售总额weekly_total - LAG(weekly_total, 1) OVER (ORDER BY week_start) AS growth_amount,-- 计算每周销售总额的增长率-- 先使用 LAG 窗口函数获取上一周的销售总额,然后用当前周的销售总额除以上一周的销售总额,再减去 1 并乘以 100 得到增长率(weekly_total / LAG(weekly_total, 1) OVER (ORDER BY week_start) - 1) * 100 AS growth_rate
FROM -- 从 weekly_sales 临时结果集中获取数据weekly_sales;
  • 技术要点
      1. 使用date_trunc函数将时间截断到周起点
      1. LAG窗口函数获取上一周的销售额
      1. 支持计算环比、同比等动态指标
        在这里插入图片描述

四、复杂业务场景建模实战

4.1 用户复购率分析(按周维度)

  • 目标:计算每个用户首次购买后,后续每周的复购次数
-- 使用 CTE(公共表表达式)定义一个名为 user_first_purchase 的临时结果集
WITH user_first_purchase AS (-- 从 order_logs 表中选择用户 ID 和该用户的首次购买时间SELECT user_id,MIN(order_time) AS first_purchase_timeFROM order_logs-- 按用户 ID 分组,以便找出每个用户的首次购买时间GROUP BY user_id
)
-- 主查询,计算每个用户从首次购买开始按周统计的购买次数
SELECT o.user_id,-- 通过计算订单时间与首次购买时间的天数差,再除以 7 得到周数,实现按周分组FLOOR(EXTRACT(EPOCH FROM (o.order_time - u.first_purchase_time)) / (7 * 24 * 3600)) AS week_since_first,-- 使用窗口函数 COUNT(*) 按用户 ID 和计算出的周数进行分组统计购买次数COUNT(*) OVER (PARTITION BY o.user_id, FLOOR(EXTRACT(EPOCH FROM (o.order_time - u.first_purchase_time)) / (7 * 24 * 3600))) AS weekly_purchase_count
FROM order_logs o
-- 通过用户 ID 将 order_logs 表和 user_first_purchase 临时结果集进行连接
JOIN user_first_purchase u 
ON o.user_id = u.user_id
-- 按用户 ID 和订单时间对结果进行排序
ORDER BY o.user_id, o.order_time;    
  • 模型优势
    • 基于用户生命周期周数进行分组
    • 清晰展示用户复购行为随时间的变化趋势
      在这里插入图片描述

4.2 实时流量监控(分钟级滑动窗口)

  • 场景:监控每分钟内的订单数量,滑动窗口为5分钟
    -- 方案一:使用 ROWS 窗口帧
    SELECT date_trunc('minute', order_time) AS minute_start,COUNT(*) AS current_minute_orders,-- 使用 ROWS 窗口帧来计算过去 4 分钟加当前分钟的订单数COUNT(*) OVER (ORDER BY date_trunc('minute', order_time)ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS five_minute_rolling_orders
    FROM order_logs
    GROUP BY minute_start
    ORDER BY minute_start;
    
  • 执行效果
    • 实时显示当前分钟及前4分钟的订单总量
    • 有效识别流量突发峰值(如促销活动期间)

五、性能优化与最佳实践

5.1 索引优化策略

窗口函数类型推荐索引类型索引字段组合
RANGE窗口BRIN索引order_time(时间列)
ROWS窗口B-TREE索引partition列+order_time
分组窗口复合索引partition列, order_time
  • BRIN索引优势
    • 对于时间序列数据,BRIN索引的存储成本仅为B-TREE的1/10~1/20查询性能在范围扫描场景提升30%以上

5.2 大数据量处理技巧

    1. 预聚合层:对需要频繁分析的时间窗口(如日、周),提前创建汇总表
    1. 并行计算:利用PostgreSQL 10+的并行窗口函数特性,通过设置max_parallel_workers_per_gather提升处理速度
    1. 分区分表:按时间范围(如按月)对订单表进行分区,减少数据扫描范围

5.3 常见错误与解决方案

错误现象原因分析解决方案
窗口函数结果异常ORDER BY列非时间类型确保使用TIMESTAMP/TIMESTAMPTZ类型
性能低下缺少索引或错误使用ROWS窗口添加BRIN索引,合理选择RANGE窗口
分组结果不正确PARTITION BY与窗口帧定义冲突检查分组列与排序列的逻辑一致性

六、总结与扩展应用

6.1 技术价值

通过窗口函数处理时间数据,实现了:

  • 复杂时间逻辑的SQL化表达,减少ETL预处理步骤
  • 实时性分析能力,支持秒级延迟的业务监控
  • 多维度交叉分析,结合用户分组、区域划分等维度

6.2 扩展场景

    1. 库存预测:使用移动平均窗口计算安全库存
    1. 设备监控:基于时间窗口的异常值检测(如3σ法则)
    1. 用户行为分析:会话超时判断(两次操作间隔超过30分钟视为新会话)

6.3 最佳实践

  • 优先使用RANGE窗口处理时间间隔相关需求
  • 对百万级以上数据,提前评估索引类型与分区策略
  • 通过CTE(公共表表达式)提升复杂窗口函数的可读性

以上内容详细介绍了PostgreSQL窗口函数在时间序列分析中的应用。

  • 你可以说说是否需要调整案例数据、补充特定场景,或对内容深度、篇幅进行修改。
  • 掌握PostgreSQL窗口函数在时间序列分析中的应用,能够显著提升数据处理效率,为业务场景建模提供强大的技术支撑。
  • 随着数据量的持续增长,合理组合窗口函数、索引优化和分区分表技术,将成为构建高性能数据分析系统的关键能力。

相关文章:

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】6.4 时间序列分析(窗口函数处理时间数据)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL时间序列分析&#xff1a;窗口函数处理时间数据实战一、时间序列分析核心场景与窗口函数优势1.1 业务场景需求1.2 窗口函数核心优势 二、窗口函数基础&#xff1a…...

数据可视化:艺术与科学的交汇点,如何让数据“开口说话”?

数据可视化&#xff1a;艺术与科学的交汇点&#xff0c;如何让数据“开口说话”&#xff1f; 数据可视化&#xff0c;是科技与艺术的结合&#xff0c;是让冰冷的数字变得生动有趣的桥梁。它既是科学——讲究准确性、逻辑性、数据处理的严谨性&#xff1b;又是艺术——强调美感…...

​IP 风险画像如何实现对恶意 IP 的有效拦截?

IP 风险画像作为一种强大的技术手段&#xff0c;在识别和拦截恶意 IP 方面发挥着至关重要的作用。 IP风险画像技术简介 IP 风险画像技术通过收集和分析 IP 地址的多维度信息&#xff0c;为每个 IP 构建详细的风险评估模型。 这些维度包括但不限于 IP 的地理位置、历史访问行…...

B树如何用于磁盘 ,B+树为如何用于数据库

B树 M阶B树&#xff1a;每个节点最多M个子节点&#xff0c;每个节点最多存M-1个Key-Value值&#xff0c;key以升序排序。 构建五阶B树。 那么value是干什么的呢。 先让我们介绍一下cpu 内存 磁盘的关系 我们知道了页的概念。B树用于磁盘的读取。Key是对文件进行编号&#xff…...

image-classifier开源程序Elixir是使用电脑学习对图像进行分类并从中提取数据或描述其内容,非常不错的图片整理工具

​一、软件介绍 文末提供程序和源码下载 Elixir 机器学习功能构建一个应用程序&#xff0c;该应用程序执行图像字幕和语义搜索&#xff0c;以使用您的语音查找上传的图像&#xff01; 二、为什么做这个程序 在构建我们的应用程序时&#xff0c;我们认为 images 这是一种必不…...

HarmonyOS 鸿蒙操作物联网设备蓝牙模块、扫描蓝牙、连接蓝牙和蓝牙通信

01【HarmonyOS 蓝牙】 物联网无线传输方案、HarmonyOS蓝牙数据通信之前的准备工作 02【HarmonyOS 蓝牙】配置蓝牙权限 检测 打开 关闭蓝牙 扫描蓝牙 显示蓝牙设备 03【HarmonyOS 蓝牙】连接蓝牙 发现服务 获取特征值 读取信息 写入信息 和蓝牙模块交互 04【物联网 Wifi模块…...

STM32开发GPIO

1、什么是GPIO General Purpose lnput Output&#xff0c;即通用输入输出端口&#xff0c;简称GPIO 作用:负责采集外部器件的信息或者控制外部器件工作&#xff0c;即输入输出 2、GPIO特点 1&#xff0c;不同芯片型号&#xff0c;IO口数量可能不一样&#xff0c;可通过选型…...

【机器学习】Logistic 回归

Logistic 回归虽然名字中带有“回归”&#xff0c;但它实际上是一种广泛应用于 二分类问题 的线性分类算法。 Logistic 回归的核心任务是预测一个样本属于正类的概率&#xff0c;而概率必须在 [ 0 , 1 ] 范围内。 Logistic回归 通过将输入特征的线性组合映射到概率空间&…...

ClimateCatcher专用CDS配置教程

文章目录 API获取官网账号注册CDSAPI本地化配置 API获取官网 首先需要访问CDS官方网站&#xff0c;点我蓝色字直接到官网how-to-api点我蓝色字直接到官网 目前API的网页是这样的 账号注册 如果有账号的小伙伴可以直接登录自己的账号并跳转到CDSAPI本地化配置&#xff0c;如…...

拆解 Prompt 工程:五大场景驱动 DeepSeek 超越 ChatGPT

同样的模型、不一样的答案&#xff0c;差距往往发生在一行 Prompt 里。本文围绕五大高频实战场景&#xff0c;给出可直接复制的 DeepSeek 提问框架&#xff0c;并穿插《DeepSeek 行业应用大全》中 64 个行业模板精华&#xff0c;帮助读者迅速跑赢 ChatGPT。&#x1f31f; 剧透…...

【解决方案】CloudFront VPC Origins 实践流程深入解析 —— 安全高效架构的实战之道

目录 引言一、VPC Origins 的核心价值&#xff08;一&#xff09;安全性提升&#xff08;二&#xff09;运维效率优化&#xff08;三&#xff09;成本节约&#xff08;四&#xff09;全球分发能力的保留 二、VPC Origins 的架构解析&#xff08;一&#xff09;流量路径设计&…...

软考 系统架构设计师系列知识点 —— 黑盒测试与白盒测试(2)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点 —— 黑盒测试与白盒测试&#xff08;1&#xff09; 本文内容参考&#xff1a; 黑盒测试和白盒测试详解-CSDN博客 软件测试中的各种覆盖&#xff08;Coverage&#xff09;详解-CSDN博客 特此致谢&#xff01; 二、白…...

【背包dp----01背包】例题三------(标准的01背包+变种01背包1【恰好装满背包体积 产生的 最大价值】)

【模板】01背包 题目链接 题目描述 : 输入描述: 输出描述: 示例1 输入 3 5 2 10 4 5 1 4输出 14 9说明 装第一个和第三个物品时总价值最大&#xff0c;但是装第二个和第三个物品可以使得背包恰好装满且总价值最大。 示例2 输入 3 8 12 6 11 8 6 8输出 8 0说明 装第三个物…...

设计模式之状态模式

在日常开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象在不同时刻有不同的状态&#xff0c;不同状态下它的行为也会发生变化。此时&#xff0c;使用大量if...else或switch语句会让代码变得混乱而难以维护。为了更优雅地应对这种问题&#xff0c;状态模式(Stat…...

arXiv论文 MALOnt: An Ontology for Malware Threat Intelligence

文章讲恶意软件威胁情报本体。 作者信息 作者是老美的&#xff0c;单位是伦斯勒理工学院&#xff0c;文章是2020年的预印本&#xff0c;不知道后来发表在哪里&#xff08;没搜到&#xff0c;或许作者懒得投稿&#xff0c;也可能是改了标题&#xff09;。 中心思想 介绍开源…...

Spark处理过程-转换算子和行动算子

计算时机 转换算子 转换算子是惰性执行的&#xff0c;这意味着在调用转换算子时&#xff0c;系统不会立即进行数据处理。这种惰性计算的方式可以让 Spark 对操作进行优化&#xff0c;例如合并多个转换操作&#xff0c;减少数据的传输和处理量。行动算子 行动算子是立即执行的。…...

使用 pgrep 杀掉所有指定进程

使用 pgrep 杀掉所有指定进程 pgrep 是一个查找进程 ID 的工具&#xff0c;结合 pkill 或 kill 命令可以方便地终止指定进程。以下是几种方法&#xff1a; 方法1&#xff1a;使用 pkill&#xff08;最简单&#xff09; pkill 进程名例如杀掉所有名为 “firefox” 的进程&…...

Android学习总结之MMKV(代替SharedPreferences)

Q1&#xff1a;SharedPreferences 为什么会导致 ANR&#xff1f;MMKV 如何从根本上解决&#xff1f; 高频考察点&#xff1a;Android 主线程阻塞原理、SP 同步 / 异步机制缺陷、MMKV 内存映射技术 SP 导致 ANR 的三大元凶&#xff1a; 同步提交&#xff08;commit ()&#xf…...

SWiRL:数据合成、多步推理与工具使用

SWiRL&#xff1a;数据合成、多步推理与工具使用 在大语言模型&#xff08;LLMs&#xff09;蓬勃发展的今天&#xff0c;其在复杂推理和工具使用任务上却常遇瓶颈。本文提出的Step-Wise Reinforcement Learning&#xff08;SWiRL&#xff09;技术&#xff0c;为解决这些难题带…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】7.2 PostgreSQL与Python数据交互(psycopg2库使用)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL与Python数据交互&#xff1a;psycopg2库实战指南一、引言&#xff1a;数据交互的桥梁1.1 psycopg2核心优势 二、环境准备与基础连接2.1 安装配置2.1.1 安装psyco…...

【Prompt工程—文生图】案例大全

目录 一、人物绘图 二、卡通头像 三、风景图 四、logo设计图 五、动物形象图 六、室内设计图 七、动漫风格 八、二次元图 九、日常场景图 十、古风神化图 十一、游戏场景图 十二、电影大片质感 本文主要介绍了12种不同类型的文生图技巧&#xff0c;通过加入不同的图像…...

NVM完全指南:安装、配置与最佳实践

发布于 2025年5月7日 • 阅读时间&#xff1a;10分钟 &#x1f4a1; TL;DR: 本文详细介绍了如何完整卸载旧版Node.js&#xff0c;安装NVM&#xff0c;配置阿里云镜像源&#xff0c;以及设置node_global与node_cache目录&#xff0c;打造高效Node.js开发环境。 &#x1f4cb; 目…...

成都养老机器人“上岗”,机器人养老未来已至还是前路漫漫?

近日&#xff0c;成都养老机器人“上岗”引发关注&#xff0c;赛博养老这一概念再次成为人们讨论的焦点&#xff0c;究竟赛博养老未来已来&#xff0c;还是仍需漫长等待&#xff0c;引发诸多思考。 成都研发的养老机器人“上岗”确实标志着智慧养老领域的又一进步&#xff0c;…...

数据中心 第十五次CCF-CSP计算机软件能力认证

总结一下图树算法比如krusal 迪杰斯特拉 prim算法喜欢改变距离定义 或者求别的东西 而拓扑排序喜欢大模拟 本题使用kerusal算法求出最后一条边就可以。 ac代码&#xff1a; #include <iostream> #include <vector> #include <algorithm>using namespac…...

【面试 · 一】vue大集合

目录 vue2 基础属性 组件通信 全局状态管理 vueX 路由 路由守卫 vue3 基础属性 组件通信 全局状态管理 Pinia 路由 路由守卫 vue2、vue3生命周期 setup vue2 基础属性 data&#xff1a;用于定义组件的初始数据&#xff0c;必须是一个函数&#xff0c;返回一个对…...

Java 常用的 ORM框架(对象关系映射)

Java 常用的 ORM&#xff08;对象关系映射&#xff09;框架有以下几种&#xff0c;每种都有其特点和使用场景&#xff1a; Hibernate ● 特点&#xff1a; ○ 完整的 ORM 框架&#xff0c;功能强大。 ○ 支持缓存机制&#xff08;一级缓存、二级缓存&#xff09;。 ○ 支持多种…...

自动化创业机器人:现状、挑战与Y Combinator的启示

自动化创业机器人&#xff1a;现状、挑战与Y Combinator的启示 前言 AI驱动的自动化创业机器人&#xff0c;正逐步从科幻走向现实。我们设想的未来是&#xff1a;商业分析、PRD、系统设计、代码实现、测试、运营&#xff0c;全部可以在monorepo中由AI和人类Co-founder协作完成…...

支持向量机

支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种有监督的机器学习算法&#xff0c;可用于分类和回归任务&#xff0c;尤其在分类问题上表现出色。下面将从原理、数学模型、核函数、优缺点和应用场景等方面详细介绍。 原理 支持向量机的基本思…...

华为昇腾910B通过vllm部署InternVL3-8B教程

前言 本文主要借鉴&#xff1a;VLLM部署deepseek&#xff0c;结合自身进行整理 下载模型 from modelscope import snapshot_download model_dir snapshot_download(OpenGVLab/InternVL3-8B, local_dir"xxx/OpenGVLab/InternVL2_5-1B")环境配置 auto-dl上选择单卡…...

ZArchiver解压缩工具:高效解压,功能全面

在使用智能手机的过程中&#xff0c;文件管理和压缩文件的处理是许多用户常见的需求。无论是解压下载的文件、管理手机存储中的文件&#xff0c;还是进行日常的文件操作&#xff0c;一款功能强大且操作简便的文件管理工具都能极大地提升用户体验。今天&#xff0c;我们要介绍的…...

ETL介绍

&#xff08;一&#xff09;ETL介绍 “ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;、加载&#xff08;Load&#xff09;至目的端的过程。ETL一词较…...

2025.05.07-华为机考第三题300分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 城市紧急救援队伍协同规划 问题描述 智慧城市建设中,卢小姐负责设计一套紧急救援队伍协同系统。城市被规划为一个 n n n \times n...

缓存菜品-04.功能测试

一.功能测试 redis中的数据已缓存 查询数据时并没有发sql 修改鸡蛋汤价格为5元。 缓存数据没有了 价格修改成功 停售启售是一样的。修改后清理&#xff0c;再次查询又被缓存到redis中。...

跨境电商生死局:动态IP如何重塑数据生态与运营效率

凌晨三点的深圳跨境电商产业园&#xff0c;某品牌独立站运营总监李明&#xff08;化名&#xff09;正盯着突然中断的广告投放系统。后台日志显示&#xff0c;过去24小时内遭遇了17次IP封禁&#xff0c;直接导致黑五促销期间损失23%的预期流量。这并非个案——2023年跨境电商行业…...

day 14 SHAP可视化

一、原理——合作博弈论 SHAP&#xff08;SHapley Additive exPlanations&#xff09;是一种用于解释机器学习模型预测结果的方法&#xff0c;它基于合作博弈论中的 Shapley 值概念。Shapley 值最初用于解决合作博弈中的利益分配问题。假设有 n 个参与者共同合作完成一项任务并…...

处理PostgreSQL数据库事务死锁过程

查询pg_locks表&#xff0c;获取未得到满足的锁信息&#xff1a; select * from pg_locks where granted is false ; --查询得不到锁的&#xff0c;那就是两个互相等待对方持有的锁查询活动的事务会话进程&#xff0c;和上一步的锁的事务对应起来&#xff1a; select * from …...

大数据、物联网(IoT)、平台架构与设计重构大模型应用

结合大数据、物联网(IoT)、平台架构与设计重构大模型应用,需构建一个数据驱动、实时响应、弹性扩展的智能系统。以下从技术架构、数据流、核心模块设计三个维度展开: 一、整体架构设计 分层架构(基于云-边-端协同): [物联网设备层] → [边缘计算层] → [大数据平台层]…...

开发 Chrome 扩展中的侧边栏图标设置实录(Manifest V3)

在开发自己的 Chrome 扩展 Pocket Bookmarks&#xff08;口袋书签&#xff09; 的过程中&#xff0c;我遇到了一个看似简单却颇具挑战的问题&#xff1a;如何在扩展的侧边栏显示自定义图标&#xff1f; 这篇文章记录一下我踩过的坑&#xff0c;以及最终的解决方案。 这里说的侧…...

Baumer工业相机堡盟工业相机如何通过BGAPI SDK在Linux系统下设置多个USB相机(C++)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK在Linux系统下设置多个USB相机&#xff08;C&#xff09; Baumer工业相机Baumer工业相机BGAPI SDK在Linux系统下设置USB相机的技术背景Linux系统内核 USB 模块内存的修改内存限制的确定使用 GRUB 引导加载程序修改内存限制使用 U-B…...

zst-2001 历年真题 知识产权

知识产权 - 第1题 发表权有时间限制 其他下面3个没有 c 知识产权 - 第2题 bd是财产权 c 知识产权 - 第3题 b 知识产权 - 第4题 d 知识产权 - 第5题 d 知识产权 - 第6题 d 知识产权 - 第7题 d 知识产权 - 第8题 b是国务院发布的 d没有复制权…...

设备与驱动:UART设备

大部分的嵌入式系统都包括一些I/O设备&#xff0c;例如仪器上的数据显示屏、工业设备上的串口通信、数据采集设备上模拟数据采样、用于保存数据的Flash/SD卡以及网络设备上的以太网接口等&#xff0c;都是嵌入式系统中容易找到的I/O设备例子。 本专栏主要是分享RT-Thread是如何…...

Linux 服务器静态 IP 配置初始化指南

✅ 第一步&#xff1a;确认网络管理方式 运行以下命令判断系统使用的网络管理服务&#xff1a; # 检查 NetworkManager 是否活跃 systemctl is-active NetworkManager# 检查 network&#xff08;旧服务&#xff09;是否活跃 systemctl is-active network或者检查配置路径&…...

【ROS2】Nav2源码之行为树定义、创建、加载

1、简述 在 Navigation2 里,机器人的导航是一项复杂的任务,包含路径规划、避障、恢复机制等多个子任务。行为树能把这些子任务组织成清晰的层次结构,让机器人可以依据不同的情况做出合理的决策。例如,当机器人在导航途中碰到障碍物时,行为树可以决定是重新规划路径、尝试…...

Redis持久化存储介质评估:NFS与Ceph的适用性分析

#作者&#xff1a;朱雷 文章目录 一、背景二、Redis持久化的必要性与影响1. 持久化的必要性2. 性能与稳定性问题 三、NFS作为持久化存储介质的问题1. 性能瓶颈2. 数据一致性问题3. 存储服务单点故障4. 高延迟影响持久化效率.5. 吞吐量瓶颈 四、Ceph作为持久化存储介质的问题1.…...

如何统一修改word中所有英文字母的字体格式

1.需求分析 我想让整篇论文中的所有英文字母格式都修改为Time New Roman格式。 2.直观操作流程 点击左上角开始 --> 点击替换 --> 点击更多 --> 点击特殊格式 --> 选择查找内容为任意字母(Y) --> 将光标点到替换内容 --> 点击格式 --> 点击字体 --> …...

服务器上机用到的设备

服务器上机通常需要以下硬件设备&#xff1a; 服务器主机&#xff1a; CPU&#xff1a;选择高性能的多核处理器&#xff0c;如英特尔至强&#xff08;Xeon&#xff09;系列或AMD EPYC系列&#xff0c;以满足高并发和多任务处理需求。 内存&#xff08;RAM&#xff09;&#xf…...

【Java ee 初阶】多线程(8)

Synchronized优化&#xff1a; 一、锁升级 锁升级时一个自适应的过程&#xff0c;自适应的过程如下&#xff1a; 在Java编程中&#xff0c;有一部分的人不一定能正确地使用锁&#xff0c;因此&#xff0c;Java的设计者为了让大家使用锁的门槛更低&#xff0c;就在synchronize…...

数字孪生大屏UI设计

近年来,5G、大数据、云计算等新一代信息技术的蓬勃发展,计算机仿真技术与拟真软件的成熟运用,让数字孪生技术开始蔓延渗透到“互联网”相关的产业中。数字孪生大屏给予了可视化的数据直观窗口,其中展现的动态映射与实时数据让业务流转效率得到了有效提升,管理、运营和决策都能高…...

【Java ee 初阶】多线程(9)上

一、信号量Semaphore 本质上就是一个计数器&#xff0c;描述了一种“可用资源”的个数 申请资源&#xff08;P操作&#xff09;&#xff1a;使得计数器-1 释放资源&#xff08;V操作&#xff09;&#xff1a;使得计数器1 如果计数器为0了&#xff0c;继续申请资源&#xff…...

eclipse开发环境中缺少JavaEE组件如何安装

新版本eclipse去掉server了吗&#xff1f;在最近新版本的eclipse里面&#xff0c;确实找不到server模块了&#xff0c;无法配置tomcat等web服务器插件了。我们需要自己手工安装一下javaEE组件才行。 1 1&#xff1a;找到自己当前eclipse版本号码 2&#xff1a;去这个地址&…...