Data Integrity Dashboard and Queries

We have already had a problem where data is missing from Analytics, and I've heard from at least one other organization that has had a related problem. I also understand that during customization, since the cube is all inner joins, it's easy to accidentally suppress a lot of data by joining to a table that doesn't match up correctly. So I've started putting together a dashboard that will let me see at a glance whether all of the data is sill available. Has anybody else done this? Here's what I have so far:

In Analytics, I have a dashboard with the following widgets. All are "Indicator" style. Each of them should tie back to the BI views in Impresario, but I only have some of that working.

  • Analytics: Contributions: Total Amount; # of unique Contribution ID
    Impresario: select TotalAmount=sum(cont_amt), RefNoCount=count(ref_no) from bi.VT_DW_CONTRIBUTION (nolock) g 
    These two match exactly

  • Analytics: Memberships: Total Membership Count; Total Total Amount
    Impresario: Select MembershipCount=count(distinct cust_memb_no), sum(m.memb_amt + isnull(m.AVC_amt,0)) from bi.VT_DW_MEMBERSHIP (nolock) m
    These match exactly, although I was surprised to find that the query takes nearly a minute to run in our DEV environment. Seems like maybe the view could be improved.

  • Analytics: Plans: # of unique Plan ID; # of unique Step ID
    Impresario: select count(distinct p.plan_no) from bi.VT_DW_PLAN (nolock) p
    select count(distinct s.step_no) from bi.VT_DW_STEP (nolock) s
    Two queries here, but they match the analytics numbers exactly.

  • Analytics: Ticketing: Total Ticket Count; # of unique Order ID
    Impresario: How do I generate these values?

  • Analytics: Finance: Total Debit Amount; Total Credit Amount
    Impresario: How do I generate these values?
  • Analytics: Finance: # of unique Transaction ID; # of unique Sequence ID
    Impresario: How do I generate these values?

Most of the ones where I'm not sure how to generate the values are cases where the data dictionary says that the Tessitura view is "ETL stored procedure: dbo.POST_TRANSACTION", which presumably means that it's assembled by that procedure and so the view in Tessitura won't be useful. The exception is # of unique Order ID. The data dictionary seems to say that it comes from VT_DW_TICKET_HISTORY and VT_DW_ORDER_DETAIL. select count(distinct h.dw_order_no) from bi.VT_DW_TICKET_HISTORY (nolock) h returns the wrong value. select count(distinct o.order_no) from bi.VT_DW_ORDER_DETAIL (nolock) o ran for 4 minutes and generated a different wrong value.

I feel like I'm on the right track for Contributions, Memberships, and Plans, but I'm stuck on Ticketing and Finance. Any advice on those three would be much appreciated. Obviously, in a production environment, the live values would go out of sync with the Analytics values fairly quickly, but they would at least be close. I'm considering creating a procedure that takes a snapshot of these values when the load kicks off so that I can compare against that.

Any other thoughts on how to solve my problems and/or make this all work better would be much appreciated.

Thanks!

-Galen