SSAS - 扩展事件 监控设计 Power BI展示

 视频周未更新。

代码下载:SSAS_Monitor.zip 

 

 

 场景,需要监控哪些用户分别在什么时候访部哪些SSAS数据库。

 

 解决方案:

 

 

1 SSAS 设置

  》1.1  新建SSAS扩展事件会话

>>1.1 名称"Monior" ,事件选择"Query End" 并且点一下,小三角形按纽。下图所示:

》1.2 选择  Even_file, 文件保存  “D:\Monitor\Xevent\Monitor.xel”

 

至此SSAS扩展事件会话新建完成。  日志保存在D:\Monitor\Xevent  ,文件以Monitor_开头。

 

 

2  SQL SERVER 设计

SQL SERVER,核心的点在于,把xel读到数据库中。 xel每一条信息,都是XML格式内容,所以需要用到XPAH 表达式,取到我们想要的值。

》2.1通过sys.fn_xe_file_target_read_file  把文件内容读取出来

》2.2 通过 XML中 XPATH取到对应节点。 

 

 

/*

把监控文件写入到表中

*/

CREATE PROCEDURE [dbo].[USP_Monitor_SSAS]

(
  @FilePath nvarchar(500)='D:\Monitor\Xevent\Monitor_*.xel' --默值
)

AS
BEGIN

    --三天一个复盖
    Delete from Monitor_SSAS where MonitorDate>= DATEADD(D,-3, cast(GETDATE() as date))

	IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp

	SELECT  cast(dbo.fn_ConvertLocalTime(timestamp_utc) as date) as MonitorDate,   object_name, CAST(event_data AS XML) event_data  
	
	
	 INTO #tmp    FROM sys.fn_xe_file_target_read_file  ( @FilePath, default, default, default )
	   where object_name in ('QueryEnd')  and cast( dbo.fn_ConvertLocalTime(timestamp_utc) as date)>= DATEADD(D,-3, cast(GETDATE() as date))

	
	    ;with t as (
	    select object_name as EventName,MonitorDate,

		t.event_data.value('(//data[@name="NTUserName"]/value)[1]', 'varchar(20)') as UserName,
		dbo.fn_ConvertLocalTime(t.event_data.value('(//data[@name="StartTime"]/value)[1]', 'datetime') ) as StartTime,
		dbo.fn_ConvertLocalTime(t.event_data.value('(//data[@name="EndTime"]/value)[1]', 'datetime')) as EndTime,
		t.event_data.value('(//data[@name="DatabaseName"]/value)[1]', 'nvarchar(30)') as DatabaseName,
		t.event_data.value('(//data[@name="ServerName"]/value)[1]', 'nvarchar(30)') as ServerName,
		t.event_data.value('(//data[@name="TextData"]/value)[1]', 'nvarchar(max)') as TextData
        from   #tmp t  

		)
		insert into Monitor_SSAS(Duration,eventName,MonitorDate,UserName,StartTime,EndTime,DatabaseName,ServerName,TextData)


		select DATEPART(ss, EndTime-StartTime) as Duration,* from t




END
GO

  

 》2.3 通过代理作业完成  exec [dbo].[USP_Monitor_SSAS]  'D:\Monitor\Xevent\Monitor_*.xel' 调用

exec [dbo].[USP_Monitor_SSAS]  'D:\Monitor\Xevent\Monitor_*.xel'

  

 

 

 3.POWER BI

 》3.1 有可能同一时间点,有多个人访问,这时要聚合 

度量值 2 = CONCATENATEX (VALUES('查询1'[用户名]),'查询1'[用户名],",") 

  

 

 

posted @ 2019-05-27 21:12  曾新文  阅读(399)  评论(0编辑  收藏  举报