Trying to understand how to alert on cloudwatch metrics comparing most recent datapoint to some datapoint in the past

cloudwatch custom metric.
ideally want to compare current value to one week ago (same hour, same day last week).
using the “diff()” operator in Alert.
query is like:
WHEN diff () OF query (A, 25h, now-10m) IS ABOVE 20000

get error:
You have requested up to 1,490 datapoints, which exceeds the limit of 1,440. You may reduce the datapoints requested by increasing Period, or decreasing the time range.

when i reduce it to “24h” the Test Alert is successful, but i see all the datapoints it is using, like:

0:Array[14526,1573686000000]
1:Array[null,1573686060000]
2:Array[null,1573686120000]
3:Array[null,1573686180000]
4:Array[null,1573686240000]
5:Array[null,1573686300000]
6:Array[null,1573686360000]

can someone explain what is going on there?

why does it show datapoints for every minute when there is only a value in there for 1 minute per hour?

what is meant by “increasing Period or decreasing time range”? i have modified the “Evaluate every X for Y” part of the rule with no impact.

i really want to compare to periods going back one full week - it seems the enforced options for the query:
query (A, 25h, now-10m)
are EXTREMELY limited.

is the primary issue that the data is in cloudwatch? i see lots of very useful “time-shifting” options from other data source types.

Did you find this out?