我做了个开源数据应用平台 Lumina:数据人的快乐,终于轮到我了(内含在线 Demo)

📅 2026/7/27 19:48:32
我做了个开源数据应用平台 Lumina:数据人的快乐,终于轮到我了(内含在线 Demo)
我做了个开源数据应用平台 Lumina数据人的快乐终于轮到我了内含在线 Demo作为数据从业者你是否经历过这样的日常每天在 Excel、SQL、Python 之间反复切换为了一个可视化报表熬夜调试代码或者被业务部门追着问“能不能给我拉个数据看板”数据人的快乐似乎总被繁琐的工具链和重复劳动所稀释。但今天我要告诉你一个好消息——我做了个开源数据应用平台Lumina它就像一个数据人的“瑞士军刀”把数据采集、清洗、分析、可视化到应用部署全部整合在一起。你再也不用在多个工具间疲于奔命了。更棒的是它完全开源还带一个在线 Demo 让你立刻上手体验。在这篇文章中我将从基础概念开始带你逐步深入 Lumina 的核心能力最终展示如何用它构建一个端到端的数据应用。无论你是数据分析小白还是资深工程师都能找到属于自己的快乐。—## 基础概念Lumina 是什么Lumina 是一个一体化数据应用平台核心思想是“数据即应用”。传统数据工作流往往需要用 SQL 查数据 → 用 Python 做分析 → 用 Tableau 做图表 → 用 Flask 搭应用。而 Lumina 把这些步骤压缩成一个统一的编程模型。它的核心组件包括-数据管道连接各种数据源CSV、数据库、API自动处理清洗和转换。-分析引擎内置统计分析、机器学习算法支持自定义 Python 脚本。-可视化组件基于 Chart.js 和 D3.js 的交互式图表库。-应用框架用 YAML 配置文件就能生成一个完整的数据看板或 API 服务。Lumina 的核心理念可以用一句话概括让数据从“静态报表”变成“动态应用”。—## 入门示例从 CSV 文件快速构建第一个数据看板让我们从一个最简单的例子开始。假设你有一份销售数据 CSV 文件想快速创建一个交互式看板来展示销售趋势和地区分布。### 步骤 1准备数据文件创建一个名为sales_data.csv的文件内容如下这里用模拟数据csvdate,region,product,revenue,quantity2024-01-01,North,A,1200,102024-01-01,South,B,1500,122024-01-02,East,A,1100,92024-01-02,West,C,1800,152024-01-03,North,B,1300,11### 步骤 2编写 Lumina 应用配置Lumina 使用 YAML 文件来定义应用。创建一个app.yamlyaml# app.yaml - Lumina 应用配置文件name: Sales Dashboardversion: 1.0# 定义数据源datasources: - name: sales_csv type: csv file_path: ./sales_data.csv# 定义数据转换transforms: - name: monthly_revenue sql: | SELECT strftime(%Y-%m, date) AS month, SUM(revenue) AS total_revenue FROM sales_csv GROUP BY month# 定义可视化组件visualizations: - name: revenue_chart type: line_chart data_source: monthly_revenue x: month y: total_revenue title: 月度收入趋势 - name: region_pie type: pie_chart data_source: sales_csv x: region y: revenue title: 地区收入占比# 定义页面布局layout: - row: - component: revenue_chart width: 60% - component: region_pie width: 40%### 步骤 3启动 Lumina 应用在终端中运行假设你已经安装 Luminabashlumina run app.yaml --port 8080打开浏览器访问 http://localhost:8080你会看到一个包含折线图和饼图的交互式看板。数据变化时图表会自动更新。这个简单的示例展示了 Lumina 的核心能力无需写一行前端代码只用配置文件就能生成一个专业的数据应用。数据人的快乐就是从这种“零代码”的成就感开始的。—## 进阶用法用 Python 自定义分析和实时数据更新基础配置虽然方便但真实场景往往需要更复杂的分析。Lumina 允许你嵌入 Python 脚本实现任意自定义逻辑。同时它还支持实时数据源如 WebSocket、Kafka让看板动起来。### 示例构建一个实时股票监控应用假设你想监控几只股票的实时价格并用移动平均线分析趋势。#### 步骤 1准备实时数据源首先写一个 Python 脚本来模拟实时股票数据实际中可对接真实 APIpython# stock_simulator.py# 模拟实时股票数据生成器import randomimport timeimport jsonimport asyncioimport websockets# 初始化股票价格prices { AAPL: 150.0, GOOGL: 2800.0, TSLA: 700.0}async def generate_prices(websocket, path): 每秒推送一次模拟价格 while True: # 随机波动 0.5% for symbol in prices: change random.uniform(-0.005, 0.005) prices[symbol] * (1 change) prices[symbol] round(prices[symbol], 2) # 打包成 JSON 发送 data json.dumps(prices) await websocket.send(data) await asyncio.sleep(1)# 启动 WebSocket 服务start_server websockets.serve(generate_prices, localhost, 8765)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()运行这个脚本python stock_simulator.py#### 步骤 2编写 Lumina 应用含 Python 分析脚本现在创建一个更复杂的应用使用 WebSocket 数据源并用 Python 计算移动平均线。yaml# stock_monitor.yamlname: 实时股票监控version: 2.0# WebSocket 数据源datasources: - name: stock_stream type: websocket url: ws://localhost:8765 parse: json buffer_size: 60 # 保留最近60秒数据# 自定义 Python 分析脚本scripts: - name: moving_average type: python code: | # 计算每个股票的 10 秒移动平均线 import pandas as pd def compute_ma(data: list) - dict: 参数data 是最近 60 个时间点的股票数据列表 格式[{timestamp: ..., symbol: AAPL, price: 150.5}, ...] 返回{AAPL: {current: 150.5, ma10: 150.2}, ...} df pd.DataFrame(data) result {} for symbol in df[symbol].unique(): symbol_data df[df[symbol] symbol][price] current symbol_data.iloc[-1] ma10 symbol_data.tail(10).mean() result[symbol] { current: round(current, 2), ma10: round(ma10, 2) } return result# 可视化组件visualizations: - name: price_chart type: line_chart_multi script: moving_average # 显示所有股票的实时价格和 MA10 线 series: - field: AAPL.current label: AAPL 当前价 - field: AAPL.ma10 label: AAPL MA10 - field: GOOGL.current label: GOOGL 当前价 - field: GOOGL.ma10 label: GOOGL MA10 title: 实时价格与移动平均线 - name: alert_table type: table script: moving_average # 当价格突破 MA10 时显示警告 columns: - field: symbol label: 股票 - field: current label: 当前价 - field: ma10 label: 10秒均价 - field: deviation label: 偏离度(%) compute: ((current - ma10) / ma10 * 100).round(2) sort_by: deviation sort_order: desclayout: - row: - component: price_chart width: 70% - component: alert_table width: 30%#### 步骤 3运行并体验启动 Lumina 应用bashlumina run stock_monitor.yaml --port 8080现在看板上的折线图会每秒自动更新显示各股票价格和移动平均线表格会实时计算偏离度最异常的股票排在最前面。数据人的快乐就是看着数据像流水一样自己“活”起来。—## 高级特性从看板到完整数据应用Lumina 的终极能力在于它能让你的数据看板变成一个可交互、可编程的数据应用。你可以添加用户输入、触发后端分析、导出报告甚至生成 RESTful API。例如你想让用户选择股票和时间窗口然后生成分析报告。在 Lumina 中你只需1. 在 layout 中添加一个input_form组件。2. 连接一个 Python 脚本读取用户参数。3. 脚本输出结果到新的可视化组件或 PDF 生成器。这种“配置即代码”的模式让非程序员也能搭建复杂应用同时为开发者保留了充分的灵活性。Lumina 还支持 Docker 部署、多用户登录、权限管理完全满足企业级需求。—## 总结Lumina 的诞生源于一个简单的愿望让数据人把时间花在创造价值上而不是工具切换上。从最简单的 CSV 看板到实时股票监控再到完整的数据应用Lumina 用“配置驱动”的方式大幅降低了数据应用的门槛。数据人的快乐终于轮到我们了。现在你可以访问 Lumina 在线 Demo 立即体验注意本文中的 Demo 链接为示例实际请访问项目主页。或者直接去 GitHub 搜索 “lumina-data” 下载源码开启你的第一个数据应用之旅。记住最好的数据应用就是让你忘记“数据”本身专注于解决问题的那一刻。Lumina就是通往那一刻的捷径。快乐从 Lumina 开始。