快速技巧,Power BI Desktop,查询参数,第4部分,将Power Query参数值传递到SQL 服务器存储过程

我过去写过3篇关于查询参数的博文。

这是快速提示形式的第四篇。这是场景。我的一位客户要求从SQL 服务器的存储过程中获取数据。她需要将值从“查询参数”传递回SQL 服务器,并在Power BI中获得结果。

解决方案有点简单。我在中创建了一个简单的存储过程 AdventureWorksDW2019 如下:

CREATE PROCEDURE SP_Sales_by_Date 
	@date 在t
AS
BEGIN
	SET NOCOUNT ON;
	SELECT *
	FROM [dbo].[FactInternetSales]
	WHERE OrderDateKey >= @date
END
GO

在Power BI Desktop中,从SQL 服务器获取数据,然后:

  • 输入 服务器 名称
  • 输入 数据库 名称
  • 选择 数据连接模式
  • 展开 高级选项
  • 输入一个 SQL语句 调用存储过程,如下所示:
exec SP_Sales_by_Date @date = 20140101
  • 点击确定
使用Power BI Desktop中的SQL语句从SQL 服务器获取数据
  • 请点击 转换资料
在Power BI Desktop中转换数据

现在我们需要创建一个查询参数。在我的示例中,我创建了一个 日期键 小数 数据类型:

在Power BI Desktop中创建新的查询参数
继续阅读 “快速技巧,Power BI Desktop,查询参数,第4部分,将Power Query参数值传递到SQL 服务器存储过程”

Power BI桌面查询参数,第2部分,动态数据屏蔽和查询参数

Power BI桌面和SQL 服务器动态数据屏蔽

如我所承诺 我以前的帖子,在本文中,我将向您展示如何在SQL 服务器 2016动态数据屏蔽(DDM)之上使用查询参数来利用Power BI Desktop模型。我还将非常简要地说明如何从AdventureWorksDW2016CTP3数据库的DimCustomer表上启用DDM。然后,我们将在DimCustomer表顶部创建带有查询参数的Power BI Desktop模型。您还将学习如何创建Power BI模板,以便将来在部署时使用它。

注意: 如果您想了解有关使用列表输出的信息 Power BI Desktop的“查询参数”中的内容可以看一下这些系列的下一篇文章“Power BI桌面查询参数,第3部分,列表输出“.

用例

在里面 以前的帖子 我解释了如何使用查询参数创建动态数据源。您还学习了如何在过滤器行中使用查询参数。在这篇文章中,您将学习:

  1. 在SQL 服务器动态数据屏蔽(DDM)之上使用查询参数
  2. Power BI模板中的查询参数

要求

就像 Power BI查询参数的第1部分,您需要满足以下要求才能关注此职位:

  1. 最新版本 Power BI桌面 (版本:2.34.4372.322 64位(2016年4月)或更高版本)
  2. SQL服务器 2016(您可以免费下载SQL 服务器 2016 Developer Edition)
  3. AdventureWorksDW

定义

我不会提供有关DDM的太多详细信息,因为您会发现很多信息 这里。但是,为了让您稍微熟悉一下动态数据屏蔽,我将对其进行简要说明。

动态数据屏蔽(DDM)

动态数据屏蔽(DDM)是SQL 服务器 2016和Azure SQL数据库中可用的一项新功能。 DDM基本上是一种防止敏感数据暴露给非特权用户的方法。它是一项数据保护功能,可将敏感数据隐藏在查询的结果集中。您可以轻松地在现有表上启用DDM,也可以在要创建的新表上启用DDM。假设您的零售数据库中有两组用户。销售人员和销售经理。您有一张客户表,在此帖子中,它是AdventureWorksDW2016CTP3的DimCustomer。该表包含敏感数据,例如客户的电子邮件地址,电话号码及其居住地址。根据您的公司政策,“销售人员”组的成员应该不能查看敏感数据,但是应该可以查看所有其他数据。另一方面,“销售经理”组的成员可以查看所有客户的数据。为了防止销售人员看到敏感数据,您可以在DimCustomer表的敏感列上启用动态数据屏蔽。在这种情况下,当销售人员查询表时,他/她将看到被屏蔽的数据。例如,他看到 [email protected] 而不是 [email protected].

在某些列上使用DDM创建表

很简单,只需将“屏蔽方式(功能=“屏蔽功能”)列定义中的“”。所以它应该看起来像这样:

创建表Table_Name  (ID 在t IDENTITY主键,   Masked_Column1 varchar(100)屏蔽有(FUNCTION =‘Mask_Function’),   Masked_Column2 varchar(100)屏蔽有(FUNCTION =‘Mask_Function’),

 

)

更改现有表并在所需列上启用DDM

如您所料,您必须使用“更改表“ 然后 ”更改列”。您的T-SQL应该如下所示:

更改表 Table_Name 更改列 Column_Name1添加了屏蔽功能(功能=“屏蔽功能”);

更改表 Table_Name

更改列 Column_Name2添加了掩码(FUNCTION ='Mask_Function');

有关更多信息,请参阅 MSDN.

Power BI模板

模板基本上是Power BI文件,它代表预定义Power BI Desktop的实例,该实例包括数据模型,报表,查询和参数的所有定义,但不包括任何数据。创建Power BI模板是简化现有模型部署的好方法。创建模板非常容易,您只需单击文件-> Export –>Power BI模板。我们将通过本文更详细地介绍这一点。

情境

要求您对客户的数据(AdventureWorksDW2016CTP3数据库上的DimCustomer)实施更高级别的安全性,以便只有特权用户才能看到客户的电子邮件,电话号码和居住地址。特权用户是“ SalesManager”数据库角色的所有成员。还要求您阻止“ SalesPerson”数据库角色查看敏感数据。但是,“ SalesManager”和“ SalesPerson”数据库角色的所有成员都可以查询DimCustomer表。用户不应具有SQL 服务器登录名。

继续阅读 “Power BI桌面查询参数,第2部分,动态数据屏蔽和查询参数”

Power BI桌面查询参数,第1部分,简介

Power BI查询参数

Power BI桌面于2016年4月版中添加的最酷的功能之一是“查询参数”。现在,借助查询参数,我们可以在Power BI Desktop中创建参数,并在各种情况下使用它们。例如,我们现在可以定义一个引用参数的查询以检索不同的数据集。或者,我们可以通过“筛选器行”引用参数。一般来说,我们可以通过以下方式引用参数:

  • 数据源
  • 筛选行
  • 保持行
  • 删除行
  • 替换行

此外,可以将参数加载到数据模型,以便我们可以从度量,计算列,计算表和报表元素中引用它们。

在“ Power BI桌面查询参数”系列文章中,我向您展示如何在不同方案中使用查询参数。

情境

在本文中,我将根据以下几种情况向您展示查询参数的一些用例:

  1. 参数化数据源
  2. 在过滤器行中使用查询参数

在下一篇文章中,您将了解有关查询参数的更多信息:Power BI桌面查询参数,第2部分,SQL 服务器动态数据屏蔽用例”和“Power BI查询参数,第3部分,列表输出

要求

您需要满足以下要求才能关注此帖子:

  1. 最新版本 Power BI桌面 (版本:2.34.4372.322 64位(2016年4月)或更高版本)

注意: 由于动态数据屏蔽(DDM)是SQL 服务器 2016的新功能,并且在以前版本的SQL 服务器中不可用,因此您需要安装最新版本的SQL 服务器 2016。仅当您要使用SQL 服务器 2016和Adventure Works CTP3时, 动态数据屏蔽(DDM)顶部的查询参数.

方案1:参数化数据源

参数化数据源可用于许多不同的用例中。从连接到查询参数中定义的不同数据源以加载列的不同组合。为了更加清楚,我将方案分解为一些更具体的用例。

用例1:参数化数据源以连接到不同的服务器和不同的数据库

假设您有不同的客户使用相同的数据库架构。但是,托管在不同SQL 服务器实例中的数据库以及数据库名称也不同。使用查询参数,我们可以轻松地在不同的数据源之间切换,然后将报告发布到每个客户的Power BI服务。

  • 打开Power BI桌面
  • 点击获取数据
  • 从“其他”中选择“空白查询”,然后单击“连接”Power BI桌面创建空白查询
  • 在查询编辑器窗口中,单击功能区中的“管理参数”

继续阅读 “Power BI Desktop查询参数,第1部分,简介”