Return all dirty aggregations in last X days
/*Return all dirty aggregations in last X days*/
DECLARE @Days AS int
SET @Days = 1 --number of days to go back
SELECT DS.DatasetDefaultName,
CASE SDAH.AggregationTypeId
WHEN 0 THEN 'Raw' WHEN 20 THEN 'Hourly' WHEN 30 THEN 'Daily' ELSE 'Unknown'
END AS Type,
SDAH.AggregationDateTime,
DATEADD(HH, (datediff(HH, getutcdate(), getdate())), SDAH.AggregationDateTime) AS [LocalTime],
SDAH.DirtyInd,
SDAH.AggregationCount
FROM Dataset AS DS INNER JOIN
StandardDatasetAggregationHistory AS SDAH ON SDAH.DatasetId = DS.DatasetId
WHERE SDAH.DirtyInd <> 0 AND SDAH.AggregationDateTime > DATEADD(DD, -@Days, getdate())
ORDER BY SDAH.AggregationDateTime DESC, DS.DatasetDefaultName ASC, [Type] ASC
Comments
Anonymous
January 01, 2003
Having dirty aggregations usually indicates a performance problem, but sometimes can be poorly written procedures. If you see one or two dirty aggregations in a row, and then a bunch of successful aggregations, do not be concerned. If you see 10 or more dirty aggregations in a row, and there is no recovery, then you've got issues. Main point is, the DW should always recover from dirty aggregations.Anonymous
August 24, 2011
What does it mean and what should we do to avoid these dirty aggregations?