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'[用户名],",")
转载文章,请注明出处