{
"name": "pageviews",
"description": "This is a sample detection",
"cron": "0 */1 * * * ?",
"template": {
"nodes": [
{
"name": "root",
"type": "AnomalyDetector",
"params": {
"type": "PERCENTAGE_CHANGE",
"component.monitoringGranularity": "${monitoringGranularity}",
"component.timestamp": "ts",
"component.metric": "met",
"component.percentageChange": "${percentageChange}",
"component.pattern": "${pattern}",
"anomaly.metric": "${metric}"
},
"inputs": [
{
"targetProperty": "baseline",
"sourcePlanNode": "baselineDataFetcher",
"sourceProperty": "baselineOutput"
},
{
"targetProperty": "current",
"sourcePlanNode": "currentDataFetcher",
"sourceProperty": "currentOutput"
}
],
"outputs": []
},
{
"name": "baselineDataFetcher",
"type": "DataFetcher",
"params": {
"component.dataSource": "${dataSource}",
"component.query": "SELECT __timeGroup(\"${timeColumn}\", '${timeColumnFormat}', '${monitoringGranularity}') as ts, ${metric} as met FROM ${dataset} WHERE __timeFilter(\"${timeColumn}\", '${timeColumnFormat}', ${lookback}, ${lookback}) GROUP BY ts ORDER BY ts LIMIT 1000"
},
"inputs": [],
"outputs": [
{
"outputKey": "pinot",
"outputName": "baselineOutput"
}
]
},
{
"name": "currentDataFetcher",
"type": "DataFetcher",
"params": {
"component.dataSource": "${dataSource}",
"component.query": "SELECT __timeGroup(\"${timeColumn}\", '${timeColumnFormat}', '${monitoringGranularity}') as ts, ${metric} as met FROM ${dataset} WHERE __timeFilter(\"${timeColumn}\", '${timeColumnFormat}') GROUP BY ts ORDER BY ts LIMIT 1000"
},
"inputs": [],
"outputs": [
{
"outputKey": "pinot",
"outputName": "currentOutput"
}
]
}
]
},
"templateProperties": {
"dataSource": "pinotQuickStartLocal",
"dataset": "pageviews",
"metric": "sum(views)",
"monitoringGranularity": "P1D",
"timeColumn": "date",
"timeColumnFormat": "yyyyMMdd",
"percentageChange": "0.2",
"offset": "P1W",
"pattern": "up_or_down"
}
}