若要在Power BI Desktop中连接SQL Server数据源,用户可通过单击“获取数据”下拉按钮,在打开的“最常见的”数据源下拉列表中选择“SQL Server”选项,如图2-2-9所示。
图2-2-9 选择“SQL Server”选项
接下来,用户需提供SQL Server服务器名、数据库名(可选),并选择数据连接模式(“导入”或者“DirectQuery”),然后单击“确定”按钮,并继续下一步的操作,参考界面如图2-2-10所示。
图2-2-10 连接SQL Server数据库
用户还需输入连接数据库的用户名和密码,参考界面如图2-2-11所示。
图2-2-11 输入用户名和密码
数据库成功连接后,用户可以在导航器中选择要导入的表进行加载;也可以在选择一张表之后,单击“选择相关表”按钮,将与其有关联的表一起导入Power BI Desktop中。例如,选择了DimProduct表并单击“选择相关表”按钮之后,系统会自动选中与它有关系的表,如图2-2-12所示。
图2-2-12 选择相关表
前面已经介绍了通过“导入”选项(导入模式)和“DirectQuery”选项(DirectQuery连接模式)获取数据的特性,用户可以结合自己的实际情况选择需要的连接模式。
使用DirectQuery连接模式可以为用户带来以下好处:
● 相比导入模式,DirectQuery没有针对数据集的大小限制,用户可通过DirectQuery在超大型数据集上生成可视化效果。
● 使用Direct Query连接模式创建的报表始终会获取最新数据,这为某些报表需要时刻显示最新数据提供了可能。因为对于导入模式而言,源数据更新后的刷新操作实际上是在重新导入数据,这可能会因大量的数据传输而花费较长的时间,这使得导入模式在这种情况下不可行。
目前,用户在使用DirectQuery时存在如下限制:
● 所有表都必须来自单个数据库。
● 如果在查询编辑器中创建的查询过于复杂,使用DirectQuery连接时将会出错。要更正错误,用户必须在查询编辑器中删除有问题的步骤,或者使用导入模式代替使用DirectQuery连接模式。
● 关系筛选操作只能在单方向上执行,不能双向执行。
● DirectQuery不提供时间智能功能。例如,DirectQuery模式不支持日期(年、季度、月、日等)等DAX时间智能函数。
● 默认情况下,会限制允许在度量值中使用的DAX表达式。
● 使用DirectQuery时,返回数据有100万行的限制。但这仅影响返回的行,并不影响查询的行。例如,用户可以在数据源上创建查询聚合1000万行,而只要返回到Power BI的数据不超过100万行,即可将该聚合的结果返回到 Power BI。如果超过100万行,Power BI将返回错误。
在Power BI中,以下数据源支持使用DirectQuery连接模式:
● Amazon Redshift;
● Azure HDInsight Spark(Beta版本);
● Azure SQL 数据库;
● Azure SQL 数据仓库;
● Google BigQuery(Beta版本);
● IBM Netezza(Beta版本);
● Impala(版本2.x版本);
● Oracle 数据库(版本12及更高版本);
● SAP Business Warehouse应用程序服务器;
● SAP Business Warehouse消息服务器(Beta版本);
● SAP HANA;
● Snowflake;
● Spark(Beta)(版本0.9及更高版本);
● SQL Server;
● Teradata 数据库;
● Vertica(Beta版本)。