数据获取基础:从 Excel、CSV、文本文件导入数据,连接 SQL Server 等常见数据源

数据获取是 Power BI 分析流程的起点,也是决定后续数据模型质量的关键环节。无论你面对的是本地文件、企业数据库还是云端服务,Power BI Desktop 都提供了统一的“获取数据”入口,但不同数据源在连接方式、性能表现和刷新策略上存在显著差异。本章将系统讲解从 Excel、CSV、文本文件导入数据的方法,以及连接 SQL Server 等关系型数据库的完整流程,帮助你建立一套稳健、可复用的数据接入方案。

Power BI 数据获取链路与决策路径 本地文件源 Excel 工作簿 (.xlsx/.xls) CSV / 文本文件 (.csv/.txt) JSON / XML / PDF 文件夹(批量导入) 推荐:Excel / CSV 入门 企业数据库源 SQL Server Oracle / PostgreSQL MySQL / MariaDB Azure SQL / Synapse 推荐:SQL Server 企业级 Power BI 查询编辑器 数据预览与筛选 类型更改 / 列管理 合并查询 / 追加查询 关闭并应用 → 数据模型 关键决策:数据量级 → 刷新频率 → 数据源类型 → 导入模式(Import / DirectQuery)

核心原理:理解 Power BI 的数据连接模型

Power BI Desktop 的数据获取并非简单地将数据“复制粘贴”进报表,而是建立了一条从源系统到可视化层的完整管道。其核心原理包含三个层次:连接(Connection)、查询(Query)和加载(Loading)。连接层负责与数据源建立通信协议,例如对 SQL Server 使用 TDS 协议,对 Excel 使用 OLE DB 或 ODBC 驱动;查询层通过 Power Query(M 语言)对数据进行提取、清洗和转换;加载层则将处理后的数据写入 Power BI 的数据模型(VertiPaq 列式存储引擎)或保持直连模式。

理解这一原理对后续操作至关重要。例如,当你从 Excel 导入数据时,Power Query 会读取工作表中的单元格区域,并将其转换为表格结构;而连接 SQL Server 时,你可以选择导入模式(Import)或直连模式(DirectQuery)。导入模式将数据快照存入本地模型,适合数据量适中、不需要实时更新的场景;直连模式则每次查询实时访问数据库,适合大数据量或需要实时数据的场景,但对数据库性能有较高要求。

关键认知:Power BI 的数据获取不是“一次性动作”,而是“可重复执行的查询流程”。每次刷新报表时,Power Query 都会重新执行你定义的查询步骤。因此,在获取数据阶段就建立清晰的查询逻辑,比在报表后期反复修改要高效得多。

从 Excel、CSV、文本文件导入数据

本地文件是 Power BI 最常用的数据源,尤其适合个人分析和小团队协作。Excel 文件支持多工作表、命名区域和表格对象,而 CSV 和文本文件则以其轻量、通用性强的特点成为数据交换的标准格式。下面分别介绍操作流程和注意事项。

Excel 文件导入:操作流程与最佳实践

  1. 启动获取数据:在 Power BI Desktop 的“开始”选项卡中,点击“获取数据”按钮,选择“Excel”。
  2. 定位文件:在文件选择器中找到目标 .xlsx 或 .xls 文件,点击“打开”。
  3. 导航器选择:Power Query 会显示工作簿中的所有工作表、表格和命名区域。勾选需要导入的项,右侧会显示数据预览。
  4. 转换数据或加载:点击“转换数据”进入查询编辑器进行清洗,或直接点击“加载”将数据导入模型。

在导入 Excel 时,有几个关键点需要特别留意。首先,确保源数据是规范的表格格式——每列有标题、每行是一条记录、没有合并单元格、没有空行空列。如果 Excel 中有多个结构相同的工作表(例如每月一份销售数据),可以使用 Power Query 的“从文件夹”功能批量导入,并通过自定义函数合并所有文件。其次,注意数据类型自动检测。Power Query 会根据前 200 行数据推断列类型,但有时会误判(例如将“001”开头的编号识别为数字),建议在查询编辑器中手动指定每列的数据类型。

CSV 与文本文件导入:编码与分隔符处理

CSV(逗号分隔值)文件是数据交换的通用格式,但实际使用中常遇到编码和分隔符问题。Power BI 导入 CSV 时,默认使用系统区域设置(如中文系统使用 GBK 编码),如果文件是 UTF-8 编码且包含中文,可能会出现乱码。解决方法是在“获取数据”时选择“文本/CSV”,然后在预览界面中手动调整“文件原始格式”为“65001: UTF-8”。

分隔符方面,Power BI 会自动检测逗号、分号、制表符等常见分隔符,但有时需要手动指定。例如,某些欧洲地区生成的 CSV 使用分号作为分隔符,而中文环境下可能使用制表符。在“文本/CSV”连接器的预览窗口中,你可以直接修改“分隔符”选项,并实时查看数据拆分效果。

数据源类型 适用场景 关键注意事项 推荐做法
Excel (.xlsx) 中小数据量、多工作表、含公式或格式 避免合并单元格;确保列类型一致;注意工作表名称变化 将数据区域转换为“表格”(Ctrl+T),便于自动扩展
CSV (.csv) 系统导出、日志文件、跨平台数据交换 编码(UTF-8 vs GBK);分隔符(逗号/分号/制表符);首行是否为标题 导入时检查预览,必要时使用“示例文件”功能
文本文件 (.txt) 非结构化或半结构化文本、固定宽度文件 需要自定义解析规则;可能包含特殊字符 使用“从文本/CSV”连接器,配合 Power Query 的“拆分列”功能

经验提醒:对于 CSV 文件,建议在导入前用文本编辑器(如 Notepad++ 或 VS Code)打开文件,确认编码和分隔符。如果文件较大(超过 100MB),可以考虑使用 Power Query 的“数据预览”功能,只加载前 1000 行进行结构检查,确认无误后再完整加载。

连接 SQL Server 等常见数据库

企业级数据分析通常需要直接连接关系型数据库。SQL Server 是 Power BI 最原生支持的数据库源,连接稳定且功能丰富。此外,Power BI 还支持 Oracle、MySQL、PostgreSQL、IBM Db2 等主流数据库。连接数据库的核心流程相似,但不同数据库在驱动、身份验证和查询语法上存在差异。

SQL Server 连接:从基础到进阶

连接 SQL Server 的步骤如下:

  1. 选择连接器:在“获取数据”中搜索“SQL Server”,点击连接。
  2. 填写服务器信息:输入服务器名称(如 localhost 或 192.168.1.100\SQLEXPRESS),以及数据库名称(可选,留空则显示所有数据库)。
  3. 选择数据连接模式:在高级选项中,可以选择“导入”或“DirectQuery”。对于初学者,建议先使用“导入”模式。
  4. 身份验证:选择“Windows 身份验证”或“数据库身份验证”(输入用户名和密码)。企业环境通常使用 Windows 集成认证。
  5. 导航器选择表或视图:在导航器中,可以展开数据库,选择需要的表、视图,也可以编写自定义 SQL 查询。

在连接 SQL Server 时,一个重要的进阶功能是使用 SQL 语句进行数据预筛选。在“高级选项”中,你可以输入 SQL 查询语句,例如:

SELECT 
    OrderDate, 
    CustomerID, 
    SUM(OrderAmount) AS TotalAmount
FROM Sales.Orders
WHERE OrderDate >= '2024-01-01'
GROUP BY OrderDate, CustomerID;

这样做的好处是:将数据筛选和聚合下推到数据库服务器执行,减少传输到 Power BI 的数据量,显著提升性能。但需要注意,如果使用 DirectQuery 模式,SQL 语句中的某些函数可能不被支持,需要遵循 Power BI 的查询限制。

其他数据库连接要点

对于 MySQL 和 PostgreSQL,Power BI 需要安装相应的 ODBC 或 ADO.NET 驱动。连接时通常需要提供主机名、端口、数据库名和凭据。Oracle 数据库则推荐使用 Oracle Data Access Components(ODAC)。在连接这些数据库时,建议先在本地测试连接字符串,确保网络连通性和驱动版本兼容性。

风险提示:连接数据库时,务必注意数据安全。不要在报表文件中明文保存数据库密码。Power BI Desktop 支持将凭据加密存储在 Windows 凭据管理器中,发布到 Power BI 服务后,应配置网关并使用“OAuth 2.0”或“服务主体”等安全认证方式。

实战场景:从 Excel 和 SQL Server 构建销售分析数据集

为了更好地理解数据获取的完整流程,我们来看一个综合案例。假设你是一家零售公司的数据分析师,需要构建一个销售分析报表,数据来源包括:本地 Excel 文件(存储门店信息)和 SQL Server 数据库(存储销售订单明细)。

背景与约束:公司有 50 家门店,分布在华东、华南、华北三个区域。销售订单表在 SQL Server 中,包含 2023 年至今约 500 万行数据。门店信息表由行政部维护,每月更新一次,以 Excel 文件形式通过邮件发送。你需要将两个数据源整合,分析各区域的销售趋势和门店绩效。

操作步骤:

  • 第一步:导入门店信息。使用“获取数据”中的“Excel”连接器,选择门店信息文件。在查询编辑器中,将“门店ID”列的数据类型改为“整数”,将“区域”列的文本去除前后空格。重命名查询为“门店信息”。
  • 第二步:连接销售订单。使用“SQL Server”连接器,输入服务器地址和数据库名。在导航器中,选择“销售订单”表,但不要直接加载。点击“转换数据”进入查询编辑器。
  • 第三步:数据筛选与聚合。在查询编辑器中,使用“筛选行”功能,只保留 OrderDate 在 2024 年之后的记录。然后使用“分组依据”功能,按 StoreID 和 OrderDate(按月)聚合销售额。这样可以显著减少数据量。
  • 第四步:合并查询。在“销售订单”查询中,使用“合并查询”功能,以 StoreID 为关联键,连接“门店信息”查询。展开合并后的列,选择“区域”和“门店名称”。
  • 第五步:关闭并应用。完成所有转换后,点击“关闭并应用”。Power BI 会将处理后的数据加载到模型中。

结果与复盘:通过上述流程,你将 500 万行明细数据压缩为约 10 万行月度聚合数据,加载时间从原来的 5 分钟缩短到 20 秒。报表刷新时,只需重新执行查询,无需手动处理 Excel 文件。复盘经验:在数据获取阶段就进行聚合和筛选,是提升 Power BI 性能最有效的手段。此外,将门店信息与销售订单分开存储,通过关系模型关联,比合并成一张宽表更灵活,便于后续维护。

常见误区与总结复盘

在数据获取过程中,初学者常犯以下错误,需要特别注意避免:

  • 误区一:忽略数据类型。导入后才发现日期列是文本格式,导致无法按时间筛选。解决方法是导入时在查询编辑器中手动设置每列类型。
  • 误区二:加载不必要的数据。将整个 Excel 工作表或数据库表全部加载,即使只需要其中几列。这会导致模型臃肿、性能下降。应使用“选择列”功能或 SQL 查询只提取所需字段。
  • 误区三:混淆导入模式与直连模式。在 DirectQuery 模式下使用复杂的 M 语言转换,可能导致每次报表交互都触发数据库查询,造成性能瓶颈。建议:需要复杂转换时使用导入模式,需要实时数据时使用直连模式,并尽量将转换逻辑下推到数据库。
  • 误区四:忽视数据刷新策略。本地 Excel 文件无法在 Power BI 服务中自动刷新,除非使用 OneDrive 或 SharePoint 作为数据源。SQL Server 则需要配置本地数据网关才能实现云端刷新。

总结:数据获取是 Power BI 分析的地基。掌握 Excel、CSV 和 SQL Server 等常见数据源的连接方法,理解导入模式与直连模式的区别,养成在查询阶段进行数据清洗和聚合的习惯,将为你后续的数据建模和可视化打下坚实基础。建议在实际工作中,为每个数据源建立标准的连接模板,并记录数据字典,以便团队协作和后期维护。