In case of Yahoo, you should check “isBooksClosed” to get the correct data for your report dates; meaning the data you pulled will not change if isBooksClosed is true and Yahoo analytics has collected all the data for the date you requested the report.
This is especially important if you are pulling the previous day data early in the morning as Yahoo may not have had time to get collect and complete the analytics. We have run into many times books not closed condition for few accounts out of many tens of accounts. We then need to repull the data at later time of the day and run the daily summaries.
I have reproduced the part of Yahoo explaination related to this from http://developer.searchmarketing.yahoo.com/docs/V6/gsg/BasicReportService.php#books_closed
It is recommended that you wait until the books are closed before running a report. Use the isBooksClosed operation to periodically check the status of books. After the report is run, you may also check the information in the report header. See Report Headers.
isBooksClosed = (Books Closed Time > Inclusive End Date)
If the books closed time is greater than the inclusive end date, the full 24 hours of the report end date, then isBooksClosed is true and the data in the report is considered complete. If the books closed time is less than the inclusive end date, then isBooksClosed is false and the data in the report is considered incomplete.
Say your report dates are 2009.11.01 to 2009.11.03 (November 1, 2009 to November 3, 2009) and you made a API request on Nov.4th morning 3am for an account’s “KeywordSummaryByDay” and there is a possibility that Yahoo has not closed the book for Nov.3rd data. By making a SOAP call to BasicReportService with report name “isBooksClosedStatus” you be sure whether data is finalized on Yahoo side for Nov.3rd. I have seen accounts or campaigns with tens of thousands of keywords not closed by 3am the next day. So make sure that you are pulling the right data for your DW.
So, always make sure that you check for isBooksClosed.