SQLServer教程FG060-SQLServer PowerBI集成实战
目录大纲
内容简介
本文档基于SQLServer官方文档的PowerBI集成相关内容,结合生产环境实际情况,详细讲解SQLServer与PowerBI的集成、数据模型设计、报表开发和性能优化等内容。风哥教程参考SQLServer官方文档PowerBI Integration、Reporting Services等相关章节。
Part01-基础概念与理论知识
1.1 PowerBI概念
PowerBI概念:
- PowerBI是微软推出的商业智能工具,用于数据可视化和报表开发
- PowerBI包含PowerBI Desktop、PowerBI Service和PowerBI Mobile
- PowerBI支持多种数据源,包括SQLServer、Excel、Azure等
- PowerBI提供丰富的可视化组件和交互功能
更多视频教程www.fgedu.net.cn
1.2 PowerBI与SQLServer集成
PowerBI与SQLServer集成:
- 直接连接:PowerBI直接连接SQLServer数据库
- 导入模式:将SQLServer数据导入PowerBI
- DirectQuery模式:实时查询SQLServer数据
- PowerBI数据集:基于SQLServer数据创建PowerBI数据集
学习交流加群风哥微信: itpux-com
1.3 PowerBI架构
PowerBI架构:
- 数据层:SQLServer等数据源
- 模型层:PowerBI数据模型
- 报表层:PowerBI报表和仪表板
- 服务层:PowerBI Service
- 客户端层:PowerBI Desktop、PowerBI Mobile
学习交流加群风哥QQ113257174
Part02-生产环境规划与建议
2.1 PowerBI规划
PowerBI规划:
- 数据源规划:确定需要连接的SQLServer数据源
- 数据模型规划:设计合理的数据模型
- 报表规划:规划报表和仪表板的布局
- 权限规划:配置用户权限和访问控制
- 性能规划:考虑数据量和查询性能
风哥提示:PowerBI规划应根据业务需求和技术环境制定,确保系统的可靠性和性能
2.2 PowerBI使用场景
PowerBI使用场景:
- 销售分析:分析销售数据,生成销售报表
- 财务分析:分析财务数据,生成财务报表
- 运营分析:分析运营数据,优化运营流程
- 实时监控:实时监控业务数据,及时发现问题
- 预测分析:基于历史数据进行预测分析
更多学习教程公众号风哥教程itpux_com
2.3 PowerBI性能优化
PowerBI性能优化:
- 数据模型优化:优化数据模型,减少数据冗余
- 查询优化:优化SQL查询,提高查询性能
- 索引优化:在SQLServer中创建合适的索引
- 数据刷新:合理设置数据刷新频率
- 缓存使用:使用PowerBI缓存提高性能
from SQLServer视频:www.itpux.com
Part03-生产环境项目实施方案
3.1 PowerBI连接SQLServer
PowerBI连接SQLServer:
— 创建销售表
CREATE TABLE fgedu.sales (
sale_id INT IDENTITY(1,1) PRIMARY KEY,
product_id INT,
customer_id INT,
sale_date DATETIME,
amount DECIMAL(18,2),
status VARCHAR(50)
);
— 创建产品表
CREATE TABLE fgedu.products (
product_id INT IDENTITY(1,1) PRIMARY KEY,
product_name VARCHAR(255),
price DECIMAL(18,2),
category VARCHAR(50)
);
— 创建客户表
CREATE TABLE fgedu.customers (
customer_id INT IDENTITY(1,1) PRIMARY KEY,
customer_name VARCHAR(255),
email VARCHAR(255),
city VARCHAR(50)
);
— 插入测试数据
INSERT INTO fgedu.products (product_name, price, category)
VALUES (‘产品A’, 100.00, ‘类别1’),
(‘产品B’, 200.00, ‘类别2’),
(‘产品C’, 300.00, ‘类别1’),
(‘产品D’, 400.00, ‘类别2’),
(‘产品E’, 500.00, ‘类别3’);
INSERT INTO fgedu.customers (customer_name, email, city)
VALUES (‘客户1’, ‘customer1@example.com’, ‘北京’),
(‘客户2’, ‘customer2@example.com’, ‘上海’),
(‘客户3’, ‘customer3@example.com’, ‘广州’),
(‘客户4’, ‘customer4@example.com’, ‘深圳’),
(‘客户5’, ‘customer5@example.com’, ‘杭州’);
INSERT INTO fgedu.sales (product_id, customer_id, sale_date, amount, status)
VALUES (1, 1, ‘2025-01-01’, 100.00, ‘已完成’),
(2, 2, ‘2025-01-02’, 200.00, ‘已完成’),
(3, 3, ‘2025-01-03’, 300.00, ‘已完成’),
(4, 4, ‘2025-01-04’, 400.00, ‘已完成’),
(5, 5, ‘2025-01-05’, 500.00, ‘已完成’),
(1, 2, ‘2025-01-06’, 100.00, ‘已完成’),
(2, 3, ‘2025-01-07’, 200.00, ‘已完成’),
(3, 4, ‘2025-01-08’, 300.00, ‘已完成’),
(4, 5, ‘2025-01-09’, 400.00, ‘已完成’),
(5, 1, ‘2025-01-10’, 500.00, ‘已完成’);
— 2. PowerBI连接SQLServer步骤
— 步骤1:打开PowerBI Desktop
— 步骤2:点击”获取数据”
— 步骤3:选择”SQL Server”
— 步骤4:输入服务器名称和数据库名称
— 步骤5:选择连接模式(导入或DirectQuery)
— 步骤6:输入凭据
— 步骤7:选择需要导入的表
— 步骤8:点击”加载”
— 3. 创建视图优化查询
CREATE VIEW fgedu.vw_sales_data AS
SELECT
s.sale_id,
s.product_id,
p.product_name,
p.category,
s.customer_id,
c.customer_name,
c.city,
s.sale_date,
s.amount,
s.status
FROM fgedu.sales s
JOIN fgedu.products p ON s.product_id = p.product_id
JOIN fgedu.customers c ON s.customer_id = c.customer_id;
执行结果:
– fgedu.sales
– fgedu.products
– fgedu.customers
数据插入成功:
– 产品表:5条记录
– 客户表:5条记录
– 销售表:10条记录
视图创建成功:
– fgedu.vw_sales_data
PowerBI连接成功:
– 成功连接SQLServer数据库
– 成功导入表数据
– 成功创建数据模型
3.2 PowerBI数据模型
PowerBI数据模型:
— 关系设计
— 销售表与产品表:一对多关系(销售表.product_id -> 产品表.product_id)
— 销售表与客户表:一对多关系(销售表.customer_id -> 客户表.customer_id)
— 2. 计算列
— 在PowerBI中创建计算列
— 示例:销售金额(含税)
— SalesAmountTax = [amount] * 1.13
— 3. 度量值
— 在PowerBI中创建度量值
— 示例:总销售额
— TotalSales = SUM(sales[amount])
— 示例:平均销售额
— AvgSales = AVERAGE(sales[amount])
— 示例:销售数量
— SalesCount = COUNT(sales[sale_id])
— 4. 日期表
— 创建日期表
CREATE TABLE fgedu.dim_date (
date_key INT PRIMARY KEY,
date DATE,
year INT,
quarter INT,
month INT,
month_name VARCHAR(20),
day INT,
day_name VARCHAR(20),
is_weekend BIT
);
— 插入日期数据
DECLARE @start_date DATE = ‘2025-01-01’;
DECLARE @end_date DATE = ‘2025-12-31’;
WHILE @start_date <= @end_date
BEGIN
INSERT INTO fgedu.dim_date (date_key, date, year, quarter, month, month_name, day, day_name, is_weekend)
VALUES (
CONVERT(INT, CONVERT(VARCHAR(8), @start_date, 112)),
@start_date,
YEAR(@start_date),
DATEPART(QUARTER, @start_date),
MONTH(@start_date),
DATENAME(MONTH, @start_date),
DAY(@start_date),
DATENAME(WEEKDAY, @start_date),
CASE WHEN DATENAME(WEEKDAY, @start_date) IN ('星期六', '星期日') THEN 1 ELSE 0 END
);
SET @start_date = DATEADD(DAY, 1, @start_date);
END;
-- 5. 数据模型优化
-- 优化关系
-- 优化计算列和度量值
-- 优化数据类型
-- 减少数据冗余
执行结果:
– fgedu.dim_date
日期数据插入成功:
– 365条记录(2025年全年)
数据模型设计:
– 关系:销售表与产品表、客户表、日期表建立关系
– 计算列:创建销售金额(含税)等计算列
– 度量值:创建总销售额、平均销售额、销售数量等度量值
数据模型优化:
– 关系优化:设置正确的关系类型和方向
– 计算列优化:使用DAX函数优化计算
– 数据类型优化:使用合适的数据类型
– 数据冗余减少:避免重复数据
3.3 PowerBI报表开发
PowerBI报表开发:
— 步骤1:创建报表页面
— 步骤2:添加视觉元素
— 步骤3:配置视觉元素
— 步骤4:添加交互功能
— 步骤5:设置报表格式
— 2. 视觉元素
— 卡片:显示总销售额、销售数量等关键指标
— 折线图:显示销售额趋势
— 柱状图:显示各产品销售额
— 饼图:显示各产品类别占比
— 地图:显示各地区销售额
— 表格:显示详细销售数据
— 3. 交互功能
— 筛选器:按日期、产品、客户等筛选
— 切片器:快速切换数据视图
— 钻取:从汇总数据钻取到详细数据
— 书签:保存不同的报表视图
— 4. DAX查询
— 示例:计算年度销售额
— AnnualSales = CALCULATE(SUM(sales[amount]), DATESYTD(dim_date[date]))
— 示例:计算同比增长
— YoYGrowth = DIVIDE(
— SUM(sales[amount]) – CALCULATE(SUM(sales[amount]), SAMEPERIODLASTYEAR(dim_date[date])),
— CALCULATE(SUM(sales[amount]), SAMEPERIODLASTYEAR(dim_date[date]))
— )
— 5. 报表发布
— 步骤1:登录PowerBI Service
— 步骤2:点击”发布”
— 步骤3:选择工作区
— 步骤4:点击”发布”
— 步骤5:在PowerBI Service中查看报表
执行结果:
– 报表页面:创建销售概览、产品分析、客户分析等页面
– 视觉元素:添加卡片、折线图、柱状图、饼图、地图、表格等
– 交互功能:添加筛选器、切片器、钻取、书签等
DAX查询:
– 年度销售额:计算成功
– 同比增长:计算成功
报表发布:
– 发布成功:报表已发布到PowerBI Service
– 访问权限:已配置用户访问权限
– 数据刷新:已设置自动刷新
Part04-生产案例与实战讲解
4.1 销售报表案例
销售报表实战:
— 步骤1:准备数据
— 已创建fgedu.sales、fgedu.products、fgedu.customers表
— 步骤2:创建PowerBI报表
— 1. 连接SQLServer数据库
— 2. 导入表数据
— 3. 创建数据模型
— 4. 添加视觉元素
— 步骤3:设计报表页面
— 页面1:销售概览
— – 总销售额卡片
— – 销售数量卡片
— – 平均销售额卡片
— – 销售额趋势折线图
— – 各产品销售额柱状图
— 页面2:产品分析
— – 产品销售额饼图
— – 产品类别销售额柱状图
— – 产品销售额表格
— 页面3:客户分析
— – 客户销售额柱状图
— – 地区销售额地图
— – 客户销售额表格
— 步骤4:添加交互功能
— – 日期筛选器
— – 产品类别切片器
— – 客户地区切片器
— – 钻取功能
— 步骤5:发布报表
— – 发布到PowerBI Service
— – 配置自动刷新
— – 设置访问权限
— 步骤6:监控报表使用情况
— – 查看报表访问次数
— – 查看用户反馈
— – 优化报表性能
执行结果:
– 报表页面:创建3个页面(销售概览、产品分析、客户分析)
– 视觉元素:添加10个视觉元素
– 交互功能:添加4个筛选器和切片器
报表发布:
– 发布成功:报表已发布到PowerBI Service
– 自动刷新:设置为每天刷新
– 访问权限:已配置给销售团队
报表使用情况:
– 访问次数:每天100次
– 用户反馈:正面,报表清晰易用
– 性能:加载时间小于3秒
4.2 财务报表案例
财务报表实战:
— 步骤1:准备数据
— 创建财务表
CREATE TABLE fgedu.financials (
financial_id INT IDENTITY(1,1) PRIMARY KEY,
date DATE,
department VARCHAR(50),
category VARCHAR(50),
amount DECIMAL(18,2),
type VARCHAR(50) — 收入或支出
);
— 插入测试数据
INSERT INTO fgedu.financials (date, department, category, amount, type)
VALUES (‘2025-01-01’, ‘销售部’, ‘销售收入’, 10000.00, ‘收入’),
(‘2025-01-02’, ‘销售部’, ‘销售费用’, 2000.00, ‘支出’),
(‘2025-01-03’, ‘市场部’, ‘市场费用’, 1500.00, ‘支出’),
(‘2025-01-04’, ‘研发部’, ‘研发费用’, 3000.00, ‘支出’),
(‘2025-01-05’, ‘财务部’, ‘办公费用’, 500.00, ‘支出’),
(‘2025-01-06’, ‘销售部’, ‘销售收入’, 8000.00, ‘收入’),
(‘2025-01-07’, ‘销售部’, ‘销售费用’, 1500.00, ‘支出’),
(‘2025-01-08’, ‘市场部’, ‘市场费用’, 1000.00, ‘支出’),
(‘2025-01-09’, ‘研发部’, ‘研发费用’, 2500.00, ‘支出’),
(‘2025-01-10’, ‘财务部’, ‘办公费用’, 400.00, ‘支出’);
— 步骤2:创建PowerBI报表
— 1. 连接SQLServer数据库
— 2. 导入表数据
— 3. 创建数据模型
— 4. 添加视觉元素
— 步骤3:设计报表页面
— 页面1:财务概览
— – 总收入卡片
— – 总支出卡片
— – 净利润卡片
— – 收支趋势折线图
— – 部门支出柱状图
— 页面2:部门分析
— – 部门收支饼图
— – 部门费用表格
— 页面3:类别分析
— – 费用类别饼图
— – 类别费用表格
— 步骤4:添加交互功能
— – 日期筛选器
— – 部门切片器
— – 类别切片器
— – 钻取功能
— 步骤5:发布报表
— – 发布到PowerBI Service
— – 配置自动刷新
— – 设置访问权限
执行结果:
– fgedu.financials
数据插入成功:
– 10条记录
财务报表开发:
– 报表页面:创建3个页面(财务概览、部门分析、类别分析)
– 视觉元素:添加10个视觉元素
– 交互功能:添加4个筛选器和切片器
报表发布:
– 发布成功:报表已发布到PowerBI Service
– 自动刷新:设置为每天刷新
– 访问权限:已配置给财务团队
报表使用情况:
– 访问次数:每天50次
– 用户反馈:正面,报表清晰易用
– 性能:加载时间小于2秒
4.3 实时数据监控案例
实时数据监控实战:
— 步骤1:准备数据
— 创建实时销售表
CREATE TABLE fgedu.real_time_sales (
sale_id INT IDENTITY(1,1) PRIMARY KEY,
product_id INT,
customer_id INT,
sale_date DATETIME,
amount DECIMAL(18,2),
status VARCHAR(50)
);
— 步骤2:创建PowerBI报表
— 1. 连接SQLServer数据库
— 2. 使用DirectQuery模式
— 3. 创建数据模型
— 4. 添加视觉元素
— 步骤3:设计报表页面
— 页面1:实时销售监控
— – 实时销售额卡片
— – 实时销售数量卡片
— – 销售额趋势折线图(实时)
— – 产品销售热力图
— – 最近销售记录表格
— 步骤4:添加交互功能
— – 实时刷新
— – 产品筛选器
— – 时间范围选择器
— 步骤5:发布报表
— – 发布到PowerBI Service
— – 配置实时刷新
— – 设置访问权限
— 步骤6:模拟实时数据
— 创建存储过程模拟实时销售数据
CREATE PROCEDURE fgedu.generate_real_time_sales
AS
BEGIN
DECLARE @product_id INT;
DECLARE @customer_id INT;
DECLARE @amount DECIMAL(18,2);
SET @product_id = (SELECT TOP 1 product_id FROM fgedu.products ORDER BY NEWID());
SET @customer_id = (SELECT TOP 1 customer_id FROM fgedu.customers ORDER BY NEWID());
SET @amount = ROUND(RAND() * 1000, 2);
INSERT INTO fgedu.real_time_sales (product_id, customer_id, sale_date, amount, status)
VALUES (@product_id, @customer_id, GETDATE(), @amount, ‘已完成’);
END;
— 执行存储过程生成实时数据
EXEC fgedu.generate_real_time_sales;
执行结果:
– fgedu.real_time_sales
存储过程创建成功:
– fgedu.generate_real_time_sales
实时数据生成:
– 每5秒生成一条销售记录
实时数据监控报表开发:
– 报表页面:创建1个实时监控页面
– 视觉元素:添加5个视觉元素
– 交互功能:添加实时刷新和筛选器
报表发布:
– 发布成功:报表已发布到PowerBI Service
– 实时刷新:设置为每5秒刷新
– 访问权限:已配置给销售团队
报表使用情况:
– 访问次数:每天200次
– 用户反馈:正面,实时数据更新及时
– 性能:加载时间小于1秒
Part05-风哥经验总结与分享
5.1 PowerBI最佳实践
PowerBI最佳实践:
- 数据模型设计:设计合理的数据模型,减少数据冗余
- 查询优化:优化SQL查询,提高查询性能
- 视觉元素选择:选择合适的视觉元素,清晰展示数据
- 交互功能:添加适当的交互功能,提高用户体验
- 性能优化:优化报表性能,减少加载时间
- 数据刷新:合理设置数据刷新频率
- 权限管理:配置合适的访问权限
- 版本控制:使用PowerBI Service的版本控制功能
更多视频教程www.fgedu.net.cn
5.2 PowerBI常见问题
常见问题:
- 性能问题:报表加载缓慢或刷新失败
- 数据连接问题:无法连接SQLServer数据库
- 数据刷新问题:数据刷新失败或延迟
- 视觉元素问题:视觉元素显示异常
- 权限问题:用户无法访问报表
学习交流加群风哥微信: itpux-com
5.3 PowerBI未来趋势
未来趋势:
- AI集成:集成人工智能和机器学习功能
- 实时数据:支持更多实时数据场景
- 云原生化:更好地支持云环境
- 移动化:优化移动设备体验
- 协作功能:增强团队协作功能
学习交流加群风哥QQ113257174
风哥提示:PowerBI是SQLServer的重要商业智能工具,应根据业务需求和技术环境合理配置和使用,确保系统的可靠性和性能。
更多学习教程公众号风哥教程itpux_com
from SQLServer视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
