-
Notifications
You must be signed in to change notification settings - Fork 23
/
DMartComponenetExecutionTimes.sql
143 lines (129 loc) · 4.22 KB
/
DMartComponenetExecutionTimes.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
--CONVERT(varchar(12), DATEADD(ms, DATEDIFF(ms, LoadStageDBStartDate, LoadStageDBEndDate), 0), 114) AS StageLoadTime,
/*
DECLARE @ReportDate DATETIME = GETDATE()
SET @ReportDate = GETDATE() - 2
SELECT x.*
FROM
(
SELECT SourceServer
, SourceDB
, TaskName
, MAX(CASE WHEN ErrorMessage LIKE '%Validation phase is beginning.%' THEN ErrorDateTime ELSE 0 END) AS TaskStartTime
, MAX(CASE WHEN ErrorMessage LIKE '%Cleanup phase is beginning.%' THEN ErrorDateTime ELSE 0 END) AS TaskEndTime
, CONVERT(VARCHAR(12), DATEADD(ms, DATEDIFF(ms,
MAX(CASE WHEN ErrorMessage LIKE '%Validation phase is beginning.%' THEN ErrorDateTime ELSE 0 END)
, MAX(CASE WHEN ErrorMessage LIKE '%Cleanup phase is beginning.%' THEN ErrorDateTime ELSE 0 END)), 0), 114) AS TaskTimeTaken
FROM dbo.DMartComponentLogging
WHERE DATEPART(day,ErrorDateTime) = DATEPART(day,@ReportDate)
AND DATEPART(month,ErrorDateTime) = DATEPART(month,@ReportDate)
AND DATEPART(year,ErrorDateTime) = DATEPART(year,@ReportDate)
GROUP BY SourceDB
, TaskName
, SourceServer
) x
ORDER BY SourceDB, TaskName
*/
-----------------------------------------
-- PIVOT 1
BEGIN
SET NOCOUNT ON
DECLARE @TaskNames NVARCHAR(MAX)
, @SQL NVARCHAR(MAX)
, @ReportDate DATETIME = GETDATE()
SELECT @TaskNames = COALESCE(@TaskNames + '], [', '') + TaskName
--SELECT @TaskNames = COALESCE(@TaskNames + '], [TaskStartTime], [TaskEndTime], [TaskTimeTaken], [', '') + TaskName
FROM dbo.DMartComponentLogging
GROUP BY TaskName
ORDER BY TaskName
SELECT @TaskNames = '[' + @TaskNames + ']'
-- PRINT @TaskNames
DECLARE @Day NVARCHAR(2)
, @Month NVARCHAR(2)
, @Year NVARCHAR(4)
SELECT @Day = DATEPART(day,@ReportDate)
SELECT @Month = DATEPART(month,@ReportDate)
SELECT @Year = DATEPART(year,@ReportDate )
SELECT @SQL =
'
SELECT SourceServer
, SourceDB
, ' + @TaskNames + '
, ''' + CAST(@ReportDate AS NVARCHAR) + ''' AS ReportDate
FROM
(
SELECT SourceServer
, SourceDB
, TaskName
, CONVERT(VARCHAR(12), DATEADD(ms, DATEDIFF(ms,
MAX(CASE WHEN ErrorMessage LIKE ''%Validation phase is beginning.%'' THEN ErrorDateTime ELSE 0 END)
, MAX(CASE WHEN ErrorMessage LIKE ''%Cleanup phase is beginning.%'' THEN ErrorDateTime ELSE 0 END)), 0), 114) AS TaskTimeTaken
FROM dbo.DMartComponentLogging
WHERE DATEPART(day,ErrorDateTime) = ''' + @Day + '''
AND DATEPART(month,ErrorDateTime) = ''' + @Month + '''
AND DATEPART(year,ErrorDateTime) = ''' + @Year + '''
GROUP BY SourceDB
, TaskName
, SourceServer
) AS Source
PIVOT
(
MAX(TaskTimeTaken)
FOR TaskName IN (
' + @TaskNames + '
)
) AS PivotTable;
'
PRINT @SQL
EXEC sp_executesql @SQL;
END
-----------------------------------------
-- PIVOT 2
BEGIN
SET NOCOUNT ON
DECLARE @ClientNames NVARCHAR(MAX)
, @SQL NVARCHAR(MAX)
, @ReportDate DATETIME = GETDATE()
SELECT @ClientNames = COALESCE(@ClientNames + '], [', '') + SourceDB
--SELECT @ClientNames = COALESCE(@ClientNames + '], [TaskStartTime], [TaskEndTime], [TaskTimeTaken], [', '') + TaskName
FROM dbo.DMartComponentLogging
GROUP BY SourceDB
ORDER BY SourceDB
SELECT @ClientNames = '[' + @ClientNames + ']'
-- PRINT @ClientNames
DECLARE @Day NVARCHAR(2)
, @Month NVARCHAR(2)
, @Year NVARCHAR(4)
SELECT @Day = DATEPART(day,@ReportDate)
SELECT @Month = DATEPART(month,@ReportDate)
SELECT @Year = DATEPART(year,@ReportDate )
SELECT @SQL =
'
SELECT TaskName
, ''' + CAST(@ReportDate AS NVARCHAR) + ''' AS ReportDate
, ' + @ClientNames + '
FROM
(
SELECT SourceDB
, TaskName
, CONVERT(VARCHAR(12), DATEADD(ms, DATEDIFF(ms,
MAX(CASE WHEN ErrorMessage LIKE ''%Validation phase is beginning.%'' THEN ErrorDateTime ELSE 0 END)
, MAX(CASE WHEN ErrorMessage LIKE ''%Cleanup phase is beginning.%'' THEN ErrorDateTime ELSE 0 END)), 0), 114) AS TaskTimeTaken
FROM dbo.DMartComponentLogging
WHERE DATEPART(day,ErrorDateTime) = ''' + @Day + '''
AND DATEPART(month,ErrorDateTime) = ''' + @Month + '''
AND DATEPART(year,ErrorDateTime) = ''' + @Year + '''
GROUP BY SourceDB
, TaskName
, SourceServer
) AS Source
PIVOT
(
MAX(TaskTimeTaken)
FOR SourceDB IN (
' + @ClientNames + '
)
) AS PivotTable;
'
PRINT @SQL
EXEC sp_executesql @SQL
END