从关系数据源中获取数据
如果组织使用关系数据库进行销售,你可以使用 Power BI Desktop 直接连接到数据库,而不是使用导出的平面文件。
将 Power BI 连接到数据库将帮助你监视业务进度并确定趋势,以便预测销售数据、计划预算并设置性能指标和目标。 Power BI Desktop 可以连接到云或本地的多个关系数据库。
方案
Tailwind Traders 的销售团队已请求你连接到组织的本地 SQL Server 数据库,并将销售数据导入 Power BI Desktop,以便可以构建销售报表。
连接到关系数据库中的数据
可以使用 Power BI Desktop 中的“获取数据”功能,并为关系数据库选择适用的选项。 在此示例中,可以选择“SQL Server”选项,如以下屏幕截图所示。
提示
“获取数据”按钮旁是“快速访问数据源”选项,如“SQL Server”。
下一步是在“SQL Server 数据库”窗口中输入数据库服务器名称和数据库名称。 数据连接模式下有两个选项:“导入”(默认选择,推荐)和“DirectQuery”。 大多数情况下,选择“导入”。也可在“SQL Server 数据库”窗口中找到其他高级选项,但现在可以将其忽略。
添加服务器和数据库名称后,系统将提示你使用用户名和密码登录。 将有三个登录选项:
Windows - 使用你的 Windows 帐户(Azure Active Directory 凭据)。
数据库 - 使用数据库凭据。 例如,SQL Server 有自己的登录和身份验证系统(有时会用到)。 如果数据库管理员为你提供了对数据库的唯一登录,则可能需要在“数据库”选项卡上输入这些凭据。
Microsoft 帐户 - 使用你的 Microsoft 帐户凭据。 此选项通常用于 Azure 服务。
选择“登录”选项,输入用户名和密码,然后选择“连接”。
选择要导入的数据
数据库连接到 Power BI Desktop 后,“导航器”窗口将显示数据源中可用的数据(本示例中为 SQL 数据库)。 你可以选择一个表或实体来预览其内容,确保将正确的数据加载到 Power BI 模型中。
选中要引入 Power BI Desktop 的表的复选框,然后选择“加载”或“转换数据”选项。
加载 - 自动将数据加载到处于其当前状态的 Power BI 模型中。
转换数据 - 在 Microsoft Power Query 中打开数据,你可以在其中执行一些操作,例如删除不必要的行或列、对数据进行分组、删除错误以及许多其他数据质量任务。
通过编写 SQL 查询导入数据
导入数据的另一种方法是编写一个 SQL 查询,以仅指定所需的表和列。
若要编写 SQL 查询,请在“SQL Server 数据库”窗口中,输入服务器和数据库的名称,然后选择“高级选项”旁的箭头,以展开此部分并查看选项。 在“SQL 语句”框中,编写查询语句,然后选择“确定”。 在此示例中,你将使用“Select”SQL 语句从 SALES 表中加载 ID、NAME 和 SALESAMOUNT 列。
更改数据源设置
创建数据源连接并将数据加载到 Power BI Desktop 后,可以随时返回和更改连接设置。 由于组织内部的安全策略(例如,当需要每 90 天更新一次密码时),通常需要执行此操作。 你可以更改数据源、编辑权限或清除权限。
在“主页”选项卡上,选择“转换数据”,然后选择“数据源设置”选项。
从显示的数据源列表中,选择要更新的数据源。 然后,可以右键单击该数据源以查看可用的更新选项,也可以使用窗口左下角的更新选项按钮。 选择所需的更新选项,根据需要更改设置,然后应用所做的更改。
还可以从 Power Query 中更改数据源设置。 选择表,然后在“主页”功能区上选择“数据源设置”选项。 或者,你可以转到屏幕右侧的“查询设置”面板,然后选择“源”旁边的“设置”图标(或双击“选择源”)。 在显示的窗口中,更新服务器和数据库的详细信息,然后选择“确定”。
完成更改后,选择“关闭并应用”,将这些更改应用于数据源设置。
编写 SQL 语句
如前所述,你可以使用 SQL 查询将数据导入到 Power BI 模型。 SQL 代表结构化查询语言,是一种标准化的编程语言,用于管理关系数据库和执行各种数据管理操作。
请考虑以下情况:数据库具有一个大型表,其中包含多年的销售数据。 2009 年的销售数据与你正在创建的报表不相关。 在这种情况下,SQL 非常有用,因为你可以通过在 SQL 语句中指定确切的列和行,然后将它们导入语义模型,以仅加载所需的数据集。 还可以联接不同的表、运行特定计算、创建逻辑语句,并在 SQL 查询中筛选数据。
下面的示例显示一个简单查询,其中从 SALES 表中选择了 ID、NAME 和 SALESAMOUNT。
SQL 查询以 Select 语句开头,该语句允许你选择要从数据库中提取的特定字段。 在此示例中,你可以加载 ID、NAME 和 SALESAMOUNT 列。
SELECT
ID
, NAME
, SALESAMOUNT
FROM
FROM 指定要从中提取数据的表的名称。 在本例中,它是 SALES 表。 下面的示例展示了完整的 SQL 查询:
SELECT
ID
, NAME
, SALESAMOUNT
FROM
SALES
使用 SQL 查询导入数据时,请尝试避免在查询中使用通配符 (*)。 如果在 SELECT 语句中使用通配符 (*),则将从指定的表中导入所有不需要的列。
下面的示例演示使用通配符的查询。
SELECT *
FROM
SALES
通配符 (*) 将导入 Sales 表中的所有列。 不建议使用此方法,因为它将导致语义模型中出现冗余数据,进而引发性能问题,并且需要额外的步骤来规范化用于报告的数据。
所有查询还应具有 WHERE 子句。 此子句将筛选行,以仅选择所需的筛选记录。 在此示例中,如果要获取 2020 年 1 月 1 日之后的最新销售数据,请添加一个 WHERE 子句。 改进后的查询如下例所示。
SELECT
ID
, NAME
, SALESAMOUNT
FROM
SALES
WHERE
OrderDate >= ‘1/1/2020’
最佳做法是,避免直接在 Power BI 中执行此操作。 而是考虑在视图中编写此类查询。 视图是关系数据库中的对象,类似于表。 视图具有行和列,并且可以包含 SQL 语言中几乎每个运算符。 如果 Power BI 使用视图,则在检索数据时,它会参与查询折叠,这是 Power Query 的一项功能。 稍后将对查询折叠进行说明,但简言之,Power Query 会根据以后使用数据的方式来优化数据检索。