广告业务动态查询架构设计:从数据建模到可视化呈现

在数字化营销领域,广告主每天面临着海量数据带来的分析挑战:从账户整体投放效果,到分渠道、分地域的精细化运营,每一层级的数据洞察都需要灵活高效的查询能力。我们的广告业务动态查询系统,正是为解决这类需求而生 ;通过层级化数据集设计与实时计算架构,让数据分析师只需简单勾选维度和指标,就能秒级获取可视化分析结果,彻底告别传统 SQL 查询的繁琐流程。

业务痛点:数据层级复杂,实时性要求高,可视化效率,技术门槛

系统核心:数据层级数据集设计,动态查询引擎(“维度+指标+时间+动态条件”)自由搭配组合查询,实时查询排序+秒级响应,动态输出结构

一、数据模型层级设计

1. 数据集层级划分

层级名称核心维度组合存储引擎数据更新频率
账户层级账户 ID + 日期 + 基础指标StarRocks实时 + T+1
账户渠道层级账户 ID + 渠道 ID + 日期 + 渠道指标StarRocks实时 + T+1
账户地域层级账户 ID + 地域 ID + 日期 + 地域指标StarRocks实时 + T+1
广告创意层级广告 ID + 创意 ID + 日期 + 创意指标StarRocks实时 + T+1
原始事件层级全量曝光 / 点击事件明细Hive+IcebergT+1

2. StarRocks 表结构设计(账户渠道层级示例)

CREATE TABLE ad_account_channel (-- 维度字段account_id BIGINT NOT NULL,channel_id INT NOT NULL,date DATE NOT NULL,region STRING,-- 基础指标impressions BIGINT,clicks BIGINT,cost DECIMAL(10,2),ctr DECIMAL(5,4),-- 渠道特有指标channel_ctr DECIMAL(5,4),channel_cvr DECIMAL(5,4),-- 时间维度hour INT,day_of_week INT
) ENGINE=OLAP
AGGREGATE KEY(account_id, channel_id, date, region)
COMMENT "账户渠道层级数据集"
DISTRIBUTED BY HASH(account_id) BUCKETS 200
PROPERTIES ("replication_num" = "3","enable_persistent_index" = "true","index_type" = "default"
);

3. 索引与聚合策略

多级索引配置

-- Bloom Filter索引加速维度过滤
ALTER TABLE ad_account_channel 
ADD BLOOMFILTER INDEX bf_channel(channel_id) 
PROPERTIES("bloom_filter_fpp" = "0.01");-- 物化视图预聚合高频查询
CREATE MATERIALIZED VIEW mv_account_channel_daily 
AS SELECT account_id, channel_id, date, SUM(impressions) AS total_imp, SUM(clicks) AS total_click
FROM ad_account_channel
GROUP BY account_id, channel_id, date;

数据聚合策略

  • 实时聚合:Flink 处理 Kafka 流数据时完成初步聚合
  • 离线聚合:Hive T+1 任务生成全量聚合数据
  • 自动合并:StarRocks 自动合并实时与离线数据
二、动态查询引擎架构

1. 核心处理流程

2. SQL 动态生成实现

查询参数模型

{"dataset": "account_channel",       // 数据集类型"dimensions": ["account_id", "date", "channel_id"], // 维度"metrics": ["impressions", "clicks", "cost", "ctr"], // 指标"time_range": ["2025-07-01", "2025-07-31"], // 时间范围"filters": {"region": ["华东", "华南"], "ctr": ">0.01"}, // 过滤条件"sort": {"cost": "desc"}, // 排序"page": {"size": 100, "number": 1} // 分页
}

SQL 生成模板

String template = "SELECT ${dimensions}, ${metrics} " +"FROM ${dataset} " +"WHERE ${time_condition} AND ${filter_conditions} " +"GROUP BY ${dimensions} " +"ORDER BY ${sort_condition} " +"LIMIT ${page_size} OFFSET ${page_offset}";// 参数替换示例
Map<String, Object> params = new HashMap<>();
params.put("dimensions", String.join(", ", dimensions));
params.put("metrics", String.join(", ", metrics));
params.put("time_condition", "date BETWEEN '2025-07-01' AND '2025-07-31'");
// 其他参数处理...

3. 缓存优化策略

4. 离线与实时数据同步

INSERT INTO ad_account_channel (
account_id
, channel_id
, date
, impressions
, clicks
, cost
)
SELECT account_id, channel_id, date, SUM(impressions), SUM(clicks), SUM(cost)
FROM hive_ad_click_history
WHERE date = '2025-07-01'
GROUP BY account_id, channel_id, date;
三、可视化与输出层设计

1. 可视化组件架构

2. 图表数据格式规范

  • 折线图数据结构
{"type": "line","title": "账户点击趋势","xAxis": ["2025-07-01", "2025-07-02", "2025-07-03"],"series": [{"name": "PC端点击","data": [1200, 1500, 1300]},{"name": "移动端点击","data": [2500, 2800, 2600]}]
}
  • 柱状图数据结构
{"type": "bar","title": "各渠道消耗分布","xAxis": ["渠道A", "渠道B", "渠道C", "渠道D"],"series": [{"name": "消耗(元)","data": [12000, 18000, 9500, 15000]}]
}

3. Excel 导出实现

// 使用Apache POI生成Excel
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("广告数据报表");// 创建表头
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {headerRow.createCell(i).setCellValue(headers[i]);
}// 填充数据
for (int i = 0; i < data.size(); i++) {Row dataRow = sheet.createRow(i + 1);for (int j = 0; j < data.get(i).length; j++) {dataRow.createCell(j).setCellValue(data.get(i)[j]);}
}// 自动调整列宽
for (int i = 0; i < headers.length; i++) {sheet.autoSizeColumn(i);
}// 输出文件
try (FileOutputStream fos = new FileOutputStream("ad_report.xlsx")) {workbook.write(fos);
}
四、整体架构图示

五、性能优化方案

1. 关键性能指标

指标名称目标值监控工具
95% 查询响应时间<200msPrometheus
StarRocks QPS>1000StarRocks Manager
缓存命中率>90%Redis Insight

2. 容量规划建议

  • StarRocks 集群
    • 每节点配置:96核 CPU+720GB 内存 + 2TB SSD
    • 存储估算:10亿条/天数据 ≈ 500GB / 天(压缩后)
    • 集群规模:初始 9 节点,支持日均 10 亿条数据查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90191.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch、torchvision与python版本对应关系

pytorch、torchvision与python版本对应关系 可以查看官网&#xff1a; https://github.com/pytorch/vision#installation

【机器学习笔记 Ⅲ】3 异常检测算法

异常检测算法&#xff08;Anomaly Detection&#xff09;详解 异常检测是识别数据中显著偏离正常模式的样本&#xff08;离群点&#xff09;的技术&#xff0c;广泛应用于欺诈检测、故障诊断、网络安全等领域。以下是系统化的解析&#xff1a;1. 异常类型类型描述示例点异常单个…

【ssh】在 Windows 上生成 SSH 公钥并实现免密登录 Linux

在 Windows 上生成 SSH 公钥并实现免密登录 Linux&#xff0c;可以使用 ssh-keygen 命令&#xff0c;这是 Windows 10 和 Windows 11 中默认包含的 OpenSSH 工具的一部分。下面是详细步骤&#xff1a; 在 Windows 上生成 SSH 公钥 打开 PowerShell 或命令提示符&#xff1a; 在…

MS51224 一款 16 位、3MSPS、双通道、同步采样模数转换器(ADC)

MS51224 是一款 16 位、3MSPS、双通道、同步采样模数转换器&#xff08;ADC&#xff09;&#xff0c;具有集成的内部参考和参考电压缓冲器。芯片可由 5V 单电源供电&#xff0c;支持单极性和全差分模拟信号输入&#xff0c;具有出色的直流和交流性能。芯片模拟输入信号频率高达…

WPF学习(四)

文章目录一、用户控价1.1 依赖属性的注册1.2 具体使用一、用户控价 1.1 依赖属性的注册 using System.Windows; using System.Windows.Controls;namespace WpfApp {public partial class MyUserControl : UserControl{// 依赖属性&#xff1a;外部可绑定的文本public static …

vue3+typescript项目配置路径别名@

1. vite.config.ts配置//方法1 import { defineConfig } from vite; import vue from vitejs/plugin-vue; import path from path;export default defineConfig({plugins: [vue()],resolve: {alias: {: path.resolve(__dirname, src)}} });//方法2,需要执行npm install -D type…

MySql 常用SQL语句、 SQL优化

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨SQL语句主要分为哪几类 SQL&#xff08;结构化查询语言&#xff09;是用于管理和操作关系型数据库的标准语言&#xff0c;其语句通常根据功能划分为以下几大类&#xff0c;每类包含不同的子句和命令&#xff0c;用于实现特定的数据库操作需求&am…

代理模式实战指南:打造高性能RPC调用与智能图片加载系统

代理模式实战指南&#xff1a;打造高性能RPC调用与智能图片加载系统 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量…

登山第二十六梯:单目3D检测一切——一只眼看世界

文章目录 一 摘要 二 资源 三 内容 一 摘要 尽管深度学习在近距离 3D 对象检测方面取得了成功&#xff0c;但现有方法难以实现对新对象和相机配置的零镜头泛化。我们介绍了 DetAny3D&#xff0c;这是一种可提示的 3D 检测基础模型&#xff0c;能够在任意相机配置下仅使用单目…

ROS2简记一:第一个ros2程序,海龟模拟与C++和python的《你好,世界!》

目录 引言 一、控制小海龟 二、键盘控制海龟 三、控制海龟案例的简单分析 四、ROS2之linux基础 4.1 linux终端命令 4.1.1 查看当前终端所在目录 pwd 4.1.2 切换终端所在目录 cd 4.1.3 查看当前目录下的文件 ls 4.1.4 主目录 ~ 4.1.5 文件的操作 4.1.6 命令使用帮助…

监控的基本理论和prometheus安装

监控的基本理论和prometheus安装 前言 这篇博客主要讲的是关于理论的知识&#xff0c;大家尽可能的消化和吸收&#xff0c;也能扩展大家的知识面 监控的基本概念 监控俗称为运维的第三只眼。没有了监控&#xff0c;业务运维都是“瞎子”。所以说监控室运维这个职业的根本&…

互联网生态下赢家群体的崛起与“开源AI智能名片链动2+1模式S2B2C商城小程序“的赋能效应

摘要&#xff1a;本文聚焦未来互联网赢家群体的构成特征&#xff0c;剖析网红经济与专业主播的差异化发展路径&#xff0c;结合开源AI智能名片链动21模式与S2B2C商城小程序的融合创新&#xff0c;提出技术赋能下互联网商业生态的重构路径。研究表明&#xff0c;开源AI技术通过智…

OneCode 图表组件核心优势解析

一、全方位的可视化能力 OneCode 图表组件提供了15种专业图表类型&#xff0c;覆盖从基础到高级的数据可视化需求&#xff1a; 基础图表&#xff1a;柱状图、折线图、饼图、面积图等高级图表&#xff1a;金字塔图、雷达图、仪表盘、LED图表等实时图表&#xff1a;实时折线图、实…

【Linux】RHCE中ansible的配置

1.安装并配置ansible 第一步先安装ansible所需软件 #安装ansible所需软件 [devopsworkstation ~]$ sudo dnf install ansible ansible-navigator rhel-system-roles -y 第二步登录镜像仓库&#xff0c;在镜像仓库下载镜像容器来运行ansible 由于ansible-navigator 知ansible…

ubuntu server系统 安装宝塔

更新系统软件包sudo apt update && sudo apt upgrade -y提示&#xff0c;如果想博主这样是存绿色liunx系统&#xff0c;要先安装python3脚本才可以python3 --version有pyhton版本号就是安装了&#xff0c;没有的话就要安装安装 Pythonsudo apt update sudo apt install…

用C++实现五子棋游戏

#include <iostream> #include <vector> #include <string> #include <iomanip> // 用于控制输出格式 #include <limits> // 用于numeric_limitsusing namespace std;// 游戏常量定义 const int BOARD_SIZE 15; // 定义棋盘大小为15x15// 棋…

【LeetCode 热题 100】73. 矩阵置零——(解法一)空间复杂度 O(M + N)

Problem: 73. 矩阵置零 题目&#xff1a;给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1a;O(M * N)空间复杂度&#xff1a;O(M N)整体思路…

【深度学习新浪潮】国内零样本抗体设计的科研进展如何?

什么是AI零样本抗体设计? AI零样本抗体设计(Zero-shot AI Antibody Design)是指不依赖任何已知抗体序列或结构数据,仅根据靶点抗原信息,通过人工智能直接生成具有高亲和力、高特异性的全新抗体序列的技术。其核心在于突破传统抗体研发的“数据依赖瓶颈”,实现真正的“从…

【论文阅读】A Diffusion model for POI recommendation

论文出处&#xff1a;ACM Transactions on Information Systems (TOIS) SCI一区 CCF-A期刊 论文地址&#xff1a;[2304.07041] A Diffusion model for POI recommendation 论文代码&#xff1a;Yifang-Qin/Diff-POI: The official PyTorch implementation of Diff-POI. 目…

Rust实现FasterR-CNN目标检测全流程

使用 Rust 和 FasterR-CNN 进行目标检测 FasterR-CNN 是目标检测领域广泛使用的深度学习模型。Rust 生态中可以通过 tch-rs(Torch 绑定)调用预训练的 PyTorch 模型实现。以下为完整实现步骤: 环境准备 安装 Rust 和必要的依赖: cargo add tch cargo add anyhow # 错误…