I have implemented some reports and I have has some circular reference cases. To prevent them I think it is possible to collect some best practices. This post could become a discussion about this subject.
F.e., how it is preferrable to structure the underlying datawarehouse? Possibly, following star schema? And for the snow-flake schema?