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

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

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

的solution is somewhat easy. I created a simple stored procedure 在 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 服务器获取数据,然后:

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

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

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

快速提示: 时间 Dimension with 时间 Bands at Seconds Granularity 在 Power BI 和 SSAS表格

时间 Dimension with 时间 Bands at Seconds Granularity 在 Power BI 和 SSAS表格

过去我也写过其他有关此主题的文章,您可以找到它们 这里 这里。在第一篇文章中,我解释了如何创建“Time”时间带的维度 分钟 粒度。然后,我的一位客户要求“Time”几秒钟内的尺寸,这鼓励了我写第二篇博客文章。在第二篇博文中,虽然我没有’t做时间带,所以我在这里写第三篇文章,这是第二篇文章支持5分钟,15分钟,30分钟,45分钟和60分钟的时间带的变体。“Time”尺寸降至秒。在这篇快速文章中,我直接跳到重点,向您展示如何生成“Time”维度以三种不同的方式,即在SQL 服务器中使用T-SQL,使用Power Query(M)和DAX。然后是这里:

时间 Dimension at Second Grain with 功率查询 (M) Supporting 时间 Bands:

在查询编辑器中复制/粘贴以下代码’s 高级 Editor to generate 时间 dimension 在 功率查询:

let
Source = Table.FromList({1..86400}, Splitter.SplitByNothing()),
    #"Renamed Columns" = Table.RenameColumns(Source,{{"Column1", "ID"}}),
    #"时间 Column Added" = Table.AddColumn(#"Renamed Columns", "时间", each 时间.From(#datetime(1970,1,1,0,0,0) + #duration(0,0,0,[ID]))),
    #"Hour Added" = Table.AddColumn(#"时间 Column Added", "Hour", each 时间.Hour([Time])),
    #"Minute Added" = Table.AddColumn(#"Hour Added", "Minute", each 时间.Minute([Time])),
    #"5 Min Band Added" = Table.AddColumn(#"Minute Added", "5 Min Band", each 时间.From(#datetime(1970,1,1,0,0,0) + #duration(0, 0, Number.RoundDown(Time.Minute([Time])/5) * 5, 0))  +  #duration(0, 0, 5, 0)),
    #"15 Min Band Added" = Table.AddColumn(#"5 Min Band Added", "15 Min Band", each 时间.From(#datetime(1970,1,1,0,0,0) + #duration(0, 0, Number.RoundDown(Time.Minute([Time])/15) * 15, 0))  +  #duration(0, 0, 15, 0)),
    #"30 Min Band Added" = Table.AddColumn(#"15 Min Band Added", "30 Min Band", each 时间.From(#datetime(1970,1,1,0,0,0) + #duration(0, 0, Number.RoundDown(Time.Minute([Time])/30) * 30, 0))  +  #duration(0, 0, 30, 0)),
    #"45 Min Band Added" = Table.AddColumn(#"30 Min Band Added", "45 Min Band", each 时间.From(#datetime(1970,1,1,0,0,0) + #duration(0, 0, Number.RoundDown(Time.Minute([Time])/45) * 45, 0))  +  #duration(0, 0, 45, 0)),
    #"60 Min Band Added" = Table.AddColumn(#"45 Min Band Added", "60 Min Band", each 时间.From(#datetime(1970,1,1,0,0,0) + #duration(0, 0, Number.RoundDown(Time.Minute([Time])/60) * 60, 0))  +  #duration(0, 0, 60, 0)),
    #"Removed Other Columns" = Table.SelectColumns(#"60 Min Band Added",{"时间", "Hour", "Minute", "5 Min Band", "15 Min Band", "30 Min Band", "45 Min Band", "60 Min Band"}),
    #"Changed 类型" = Table.TransformColumnTypes(#"Removed Other Columns",{{"时间", type time}, {"Hour", Int64.Type}, {"Minute", Int64.Type}, {"5 Min Band", type time}, {"15 Min Band", type time}, {"30 Min Band", type time}, {"45 Min Band", type time}, {"60 Min Band", type time}})
in
#"Changed 类型"
继续阅读 “Quick Tips: 时间 Dimension with 时间 Bands at Seconds Granularity 在 Power BI 和 SSAS表格”

快速提示:使用DAX Studio一次即可导出Power BI桌面和Power BI服务模型数据

出口ing Model 数据 to CSV 
or 的SQL服务器 在 One Shot

在一些最流行的旧帖子中,我解释了如何 导出数据Power BI Desktop 要么 Power BI服务数据 到不同的目的地 CSV, 电子表格 的SQL服务器。在这个快速提示中,我解释了一种非常简单的方法,可以将模型数据整体导出到DAX Studio的CSV或SQL 服务器中。

丹尼尔从XXL BI well explained 这种方法, 但是我’d迅速解释其工作原理并添加更多信息。

发布2.8版本之后 达克斯 Studio,您现在可以一口气将整个模型快速导出到CSV和SQL 服务器。

在DAX Studio中启用导出所有数据

  • 打开DAX Studio
  • 请点击“File”
  • 请点击“Options”
  • 请点击“Advanced”
  • 蜱“显示导出所有数据按钮”
达克斯 Studio导出Power BI模型数据设置

将Power BI模型数据导出到CSV

达克斯 Studio将Power BI模型数据导出到CSV
继续阅读 “快速提示:使用DAX Studio一次即可导出Power BI桌面和Power BI服务模型数据”

自动化测试SSAS表格模型

自动化测试SSAS表格

在实际的SSAS 表格项目中,您需要运行许多不同的测试方案,以向您的客户证明Tabular模型中的数据是正确的。如果您在适当的数据仓库之上运行表格模型,那么与在运营数据库之上构建语义模型时相比,您的生活会容易一些。但是,在表格模型上运行许多测试用例,然后在数据仓库上运行类似的测试并比较结果仍然是一个非常耗时的过程。因此,您的测试用例总是有两个方面,一方面是可以作为数据仓库的源数据库,另一方面是表格模型。有很多测试系统的方法,您可以在Excel中浏览表格模型,在Excel中连接到数据仓库并创建数据透视表,然后比较来自表格模型的数据和来自数据仓库的数据。但是,您可以在Excel中进行上述测试多少个量度和尺寸?

另一种方法是在表格模型端运行DAX查询。如果您的源数据库是SQL 服务器数据库,则需要在数据库端运行T-SQL查询,然后匹配双方的结果以证明表格模型中的数据正确。

在这篇文章中,我’d想与您分享一种自动在表格模型上运行的DAX查询的方法。

马上,这将是一篇漫长的文章,因此您可以一边享受阅读,一边煮咖啡或喝杯咖啡。

尽管我不会涉及另一端,源端或数据仓库端,但也值得将该部分自动化,因为您可以节省很多时间。一世’确保可以在SQL 服务器端开发类似的过程,但是,我暂时不做介绍。我什么’在本文中将要解释的只是生成和运行DAX查询并将结果存储在SQL 服务器中的许多可能方式之一。也许它并不完美,但是,这是一个很好的起点。如果您有更好的主意,最好在此帖子下方的评论部分与我们分享。

要求

  • 的SQL服务器分析服务表格2016年及更高版本(兼容级别1200及更高版本)
  • 的SQL服务器的实例
  • 的SQL服务器管理Studio(SSMS)

它是如何工作的

我什么’我要解释的很简单。我想生成并运行DAX查询并捕获结果。第一步是获取所有度量及其相关维度,然后将所有度量按所有相关维度切分并获得结果。最后,我捕获结果并将其存储在SQL 服务器临时表中。让’考虑一个简单的场景:

  • 您只有一项措施[互联网销售]‘Internet Sales’ table
  • 的measure is related to just one dimension, “Date” dimension
  • 的“Date” dimension has only four columns, Year, Month, Year-Month 和 日期
  • you want to slice [Internet Sales] by Year, Month, Year-Month 和 日期

因此,您需要编写四个DAX查询,如下所示:

EVALUATE
SUMMARIZE(
    'Internet Sales'
    , 日期'[Calendar Year]
    , "互联网销售", [Internet Total Sales]
)
EVALUATE
SUMMARIZE(
   'Internet Sales'
   , 'Date'[Month Name]
   , "互联网销售", [Internet Total Sales]
)
EVALUATE
SUMMARIZE(
    'Internet Sales'
   , 'Date'[Year-Month]
   , "互联网销售", [Internet Total Sales]
)
EVALUATE
SUMMARIZE(
     'Internet Sales'
    , 'Date'[Date]
    , "互联网销售", [Internet Total Sales]
)

很容易不是’是吗?可是等等。如果您有10个与4维相关的度量,而每个维都有10列,该怎么办?听起来很费力’是吗?好吧,在现实世界中,您赢了’不能按照所有相关维度对所有度量进行切片,但是您仍然需要做很多事情。我们要做的是生成并运行DAX查询,并将结果存储在SQL 服务器中的表中。多么酷啊?

好的,这是这样的…

  • 从SQL 服务器为SSAS表格实例创建链接服务器
  • 使用表格DMV生成DAX查询
  • 通过表格模型运行查询并在SQL 服务器临时表中获取/存储结果

继续阅读 “自动化测试SSAS表格模型”