I have pulled my hair off and resolved the issue now. however, your direction ofCanonicalDate and reference date is correct. (also many thanks to original posts of @Henric_Cronström here, benefial a not).
in my case, it is a little tricky that the [actual finished date] could be sometimes earlier than the [required date] for certain orders, that means to use reference date is not able to count orders which include delayed andearlier finished orders. So i use canonicalDate in different DateType combined with referencedate to count both finally. with dimension in monthname(CanonicalDate). the solution is quite heavy stuff, and I am happy it finally works.