为SP_BLITZ / First Responder套件加速Power BI接口

所以 特蕾西博吉亚诺 告诉我关于伟大的 第一个响应者套件布伦特ozar. 使用Power Bi Desktop for UI使用Power Bi Desktop可以使用SP_BLITZ,但由于数据增长,因此对非响应性进行了速度。因为这集中在绩效数据上,也包括我对权力BI的新爱,我要求看看它。特雷西有点友好地向我发送她的数据库副本和响应者套件的支持文件,我终于有时间本周调查它。我们赢了’讨论如何在假期结束后用这么多预期找到时间的时间。

我本周。

此套件的主旨是它是一个数据库存储库,作为一部分 sp_blitz.first. 收集监控警报和性能度量数据。一旦您 ’ve设置为此,然后您可以使用Power BI Desktop Dashboard作为所有这些数据的接口。

现在这是一种令人敬畏的方法来推出更多DBA到Power BI和IT’很好的方法可以从您的指标数据中获取更多信息。挑战是’若要执行完整刷新的大量数据以及像这样的数据库的自然生活是增长的。静态数据库上的刷新是通过TRACY发送的,一旦将我的PBIX连接到本地数据库源,才拍摄一小时刷新。请记住,我有16克内存,32克交换,并在Power BI中增加了我的数据加载选项非常高。

有几件事我确实在刷新了Power Bi-中的数据时监视系统上的需求

  • RAN DAX Studio识别是否有任何可以更有效的DAX。
  • 使用查询以及数据库设计审核了数据库的索引。
  • 通过将它们拉入Power Bi,从数据的刷新中检查了日志。

结果

范围扫描 PK__BLITZFIR__3214EC2793CCC163 是数据库中最关心的。这个指数正在进行中 blitzfirst_perfmonstats. 表和单个刷新,执行142个扫描。

有一些达克斯语句将从一些简化中受益,这是其中的原因 perfmonstats. 糟糕的扫描,所以它是一个要调查的地区。

从日志评论中,我发现的是任何和所有这些更改只会帮助最低限度。真正的变化必须在整个数据模型设计中。这可能是在Analysis Services中的窄,表格数据模型或在SQL Server中创建报告表的介绍 sp_blitz.first db. 这是专门用于最佳导入的电力BI。

有一个快速解决方案可以帮助 - 随着Power Bi Desktop并不是’T有桌面版本中的增量刷新,我们可以更新要使用的PBIX文件 直接查询 并将压力卸载到SQL Server数据库。这样做,我经历了刷新时间,通过这样做,从一小时到几秒钟。

所以,如果你’重新寻找一个设置来做这件事,有没有’t one, but 有一种棘手的方法 不必重建一切。如果您,请按照以下步骤操作’d想尝试一下。

从PBIX文件创建您的ZIP文件

  1. 使PBIX文件的副本作为备份。
  2. 打开新的Power BI桌面文件,将其连接到您的SQL Server数据库’RE目前从中导入,但选择Direct查询而不是导入。
  3. 将文件保存在新名称下。
  4. 将您的原始文件和新文件重命名.zip,(我知道,听起来很奇怪,但相信我….)

编辑“Zip” Files

  1. 现在用每个文件打开文件资源管理器,但仅限“EXTRACT ALL”在您创建和重命名的新文件上。
  2. 在原始的,导入的版本文件中,当您打开时“zip”文件,您将看到Power BI文件的所有组件。
  3. 从原始版本中删除数据模型文件夹’s zip file.
  4. 然后从新的zip文件夹提取复制数据mashup文件夹(这就是为什么我们需要实际提取这个而不是原始的原因。我们’将其添加到原始zip文件!)到原始zip文件夹。
  5. 关闭提取物并返回到文件资源管理器中的原始zip文件。将其重命名为正确的.bpix扩展,(我将我的文件命名为sp_blitz_imp.zip和sp_blitz_dq.zip到therunguish,这也需要删除这些唯一标识符。)
  6. 现在我有原始文件返回,重命名为sp_blitz.pbix。如果需要,您可以删除第二个文件’不再需要。
从原始文件中删除DataModel文件夹。
将DataMashup文件夹从新文件复制到旧文件

您现在可以打开原始编辑文件。您可能会收到一些错误,屏幕可能会说,“fix it”在一些视觉效果上。大学教师’担心,只需点击它即可刷新。如果单击刷新,您现在将看到您的不同通知’现在使用Direct查询而不是使用此PBI仪表板导入。

重建PBI措施

最后一步是重建aren的措施’数据库的一部分,但原始电源BI数据模型的一部分和aren’现在目前。这些需要将Blitzfirst_waitstats_delta和BlitzFirst_Filestats_Delta表添加到。要添加一个新的度量,请右键单击表格,然后左键单击新度量,或在顶部的功能区突出显示表格时选择新的度量。

创造措施

有八个措施总计需要添加到数据模型中,所以你’LL需要为每个人创建一个新的度量,六个 blitzfirst_waitstats_delta 表和两个在 blitzfirst_filestats_delta 桌子。为确保我捕获了所有这些,我使用了一个用于我使用的PowerShell脚本,需要一些关于它如何捕获端口的编辑(我使用NetStat并从那里解析了vs.msdv text文件的端口。原始脚本的一部分。)

一旦完成,我使用以下输出来重新创建每个措施。每个等级措施都依赖于WGROWTH测量,所以’■为什么先创建这个。

 WGrowth = VAR _MAX = 
CALCULATE(MAX(BlitzFirst_WaitStats_Deltas[Wait Time, Minutes per Minute]),VALUES(BlitzFirst_WaitStats_Deltas[wait_type]))
VAR _AVG = CALCULATE(AVERAGE(BlitzFirst_WaitStats_Deltas[Wait Time, Minutes per Minute]),
ALL(BlitzFirst_WaitStats_Deltas[wait_type]),
ALL(BlitzFirst_WaitStats_Deltas[CheckDate]))
RETURN
IF (RANKX( ALL(BlitzFirst_WaitStats_Deltas[wait_type]),
DIVIDE(_MAX,_AVG) ,,DESC,Dense) <= 5,
DIVIDE(_MAX,_AVG) , BLANK())


单击左侧的复选标记以完成创建度量的过程。右键单击新的度量,粘贴到下文中的措施中的每一个,(批量排名1-5,然后两者为文件统计数据详细信息),然后单击每个粘贴后的复选粘贴以确保它’s created.


Batch Rank 1 = VAR RankingDimension = VALUES(BlitzFirst_WaitStats_Deltas[wait_type])
RETURN
CALCULATE( [WGrowth],
    FILTER(RankingDimension,
        RANKX( ALL(BlitzFirst_WaitStats_Deltas[wait_type]), [WGrowth],,DESC,Dense) = 1 ))



Batch Rank 2 = VAR RankingDimension = VALUES(BlitzFirst_WaitStats_Deltas[wait_type])
RETURN
CALCULATE( [WGrowth],
    FILTER(RankingDimension,
        RANKX( ALL(BlitzFirst_WaitStats_Deltas[wait_type]), [WGrowth],,DESC,Dense) = 2 ))



Batch Rank 3 = VAR RankingDimension = VALUES(BlitzFirst_WaitStats_Deltas[wait_type])
RETURN
CALCULATE( [WGrowth],
    FILTER(RankingDimension,
        RANKX( ALL(BlitzFirst_WaitStats_Deltas[wait_type]), [WGrowth],,DESC,Dense) = 3 ))



Batch Rank 4 = VAR RankingDimension = VALUES(BlitzFirst_WaitStats_Deltas[wait_type])
RETURN
CALCULATE( [WGrowth],
    FILTER(RankingDimension,
        RANKX( ALL(BlitzFirst_WaitStats_Deltas[wait_type]), [WGrowth],,DESC,Dense) = 4 ))



Batch Rank 5 = VAR RankingDimension = VALUES(BlitzFirst_WaitStats_Deltas[wait_type])
RETURN
CALCULATE( [WGrowth],
    FILTER(RankingDimension,
        RANKX( ALL(BlitzFirst_WaitStats_Deltas[wait_type]), [WGrowth],,DESC,Dense) = 5 ))


List of FileLogicalName values = VAR __DISTINCT_VALUES_COUNT = DISTINCTCOUNT('BlitzFirst_FileStats_Deltas'[FileLogicalName])
VAR __MAX_VALUES_TO_SHOW = 3
RETURN
  IF(
    __DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
    CONCATENATE(
      CONCATENATEX(
        TOPN(
          __MAX_VALUES_TO_SHOW,
          VALUES('BlitzFirst_FileStats_Deltas'[FileLogicalName]),
          'BlitzFirst_FileStats_Deltas'[FileLogicalName],
          ASC
        ),
        'BlitzFirst_FileStats_Deltas'[FileLogicalName],
        ", ",
        'BlitzFirst_FileStats_Deltas'[FileLogicalName],
        ASC
      ),
      ", etc."
    ),
    CONCATENATEX(
      VALUES('BlitzFirst_FileStats_Deltas'[FileLogicalName]),
      'BlitzFirst_FileStats_Deltas'[FileLogicalName],
      ", ",
      'BlitzFirst_FileStats_Deltas'[FileLogicalName],
      ASC
    )
  )



List of PhysicalName values = VAR __DISTINCT_VALUES_COUNT = DISTINCTCOUNT('BlitzFirst_FileStats_Deltas'[PhysicalName])
VAR __MAX_VALUES_TO_SHOW = 3
RETURN
  IF(
    __DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
    CONCATENATE(
      CONCATENATEX(
        TOPN(
          __MAX_VALUES_TO_SHOW,
          VALUES('BlitzFirst_FileStats_Deltas'[PhysicalName]),
          'BlitzFirst_FileStats_Deltas'[PhysicalName],
          ASC
        ),
        'BlitzFirst_FileStats_Deltas'[PhysicalName],
        ", ",
        'BlitzFirst_FileStats_Deltas'[PhysicalName],
        ASC
      ),
      ", etc."
    ),
    CONCATENATEX(
      VALUES('BlitzFirst_FileStats_Deltas'[PhysicalName]),
      'BlitzFirst_FileStats_Deltas'[PhysicalName],
      ", ",
      'BlitzFirst_FileStats_Deltas'[PhysicalName],
      ASC
    )
  )

创建这些后,返回Power BI仪表板,然后单击“等待统计”选项卡。点击“Fix This”对于aren的每个报告’T目前正在运行,然后他们应该在没有问题的情况下更新和运行,现在他们有衡量标准’s required for each.

从这一点上,您可以使用Direct查询使用Power BI桌面仪表板,而不是导入数据。这些措施将会影响性能,可以在我前进时缓解,但这是解决由于此套件的Power BI桌面中没有增量刷新而解决性能问题的良好开端。

dbakevlar.

http://about.me/dbakevlar

One thought on “为SP_BLITZ / First Responder套件加速Power BI接口

评论被关闭。