Q:

How to calculate baclklog last year

Use the value of BACKLOG_M corresponding to the Snapdate of the first of the month -12. 
For example: for each Snapdate of January 2018, we retrieve the value of the Snapdate 1st of February 2017.

I try within thios script but it doesn't return the correct value 
select fs.*,
       (case when day(snapdate) = 1
             then max(case when day(snapdate) = 1 then backlog_y_1 end) over (partition by year_month)
        end) as backlog_y_1
from factsales  fs;

A:

I would just use join.  It is a little hard to follow what the columns are in your tables, but something like this:
select fs.*, bl.backlog_y_1
from factsales fs left join
     backlog_y_1 bl
     on year(snapdate) = year(dateadd(month, 1, bl.date)) and
        month(snapdate) = month(dateadd(month, 1, bl.date));

