2013-05-30 45 views
1

我開發了一個Windows控制檯應用程序,它可以提取Google Analytics數據並寫入.CSV文件。當在Google Analytics(分析)查詢瀏覽器中查詢特定日期的數據時,會顯示: - 「您的查詢匹配96782個結果...」。無法從Google Analytics檢索超過10k條記錄

問題是,當我查詢使用申請同一日期的數據,默認情況下只返回1000條記錄,當我設置超過10K

DataResource.GaResource.GetRequest objRequest.MaxResult越多,那麼它給了我最大至最大10K的記錄。

有沒有辦法獲得超過10K的記錄。

+0

的10K記錄的限制可以在網絡上不同的地方被發現。當您遇到此限制時,與Google聯繫可能很有用。 – CodeCaster

+0

是的,它是預期的。 –

回答

2

所以我所做的是,我設置Request.MaxResult = 10000和Response.ItemsPerPage = 10000的重要作用是通過Request.StartIndex發揮具有分頁機制,例如在第一個循環中,我們將獲得1-10000行然後10001-20000 .... 20001-30000等等。

在循環中,最初對特定日期的數據的請求設置爲Request.StartIndex = 1,並在行計數達到第10000行時連續增加到MaxResult + 1,例如: - Request.StartIndex = 1然後10001然後20001 .... 30001 ... 40001等等,直到Response.Rows == null。

這裏是我的代碼: -

  StringBuilder sbrCSVData = new StringBuilder(); 
      int intStartIndex = 1; 
      int intIndexCnt = 0; 
      int intMaxRecords = 10000; 

      AnalyticsService objAnaSrv = new AnalyticsService(objInit); 
      string metrics = "ga:visitors,ga:visits,ga:visitBounceRate,ga:pageviews,ga:pageviewsPerVisit,ga:uniquePageviews,ga:avgTimeOnPage,ga:exits,ga:avgPageLoadTime,ga:goal1ConversionRate"; 
      DataResource.GaResource.GetRequest objRequest = objAnaSrv.Data.Ga.Get(strProfId, startDate,endDate, metrics); 
      objRequest.Dimensions = "ga:visitCount,ga:browser,ga:browserVersion,ga:IsMobile,ga:screenResolution,ga:date,ga:hour"; 
      objRequest.MaxResults = 10000; 

      while (true) 
      { 
       objRequest.StartIndex = intStartIndex; 
       GaData objResponse = objRequest.Fetch(); 
       objResponse.ItemsPerPage = intMaxRecords; 

        if (objResponse.Rows != null) 
       { 
        intIndexCnt++; 
        for (int intRows = 0; intRows < objResponse.Rows.Count; intRows++) 
        { 
         IList<string> lstRow = objResponse.Rows[intRows]; 
         for (int intCols = 0; intCols <= lstRow.Count - 1; intCols++) 
         { 
          strRowData += lstRow[intCols].ToString() + "|"; 
         } 
         strRowData = strRowData.Remove(strRowData.Length - 1, 1); 
         sbrCSVData.Append(strRowData + "\r\n"); 
         strRowData = ""; 
        } 
        intStartIndex = intIndexCnt * intMaxRecords + 1; 
       } 
       else break; 
      } 
+0

Nice Implementation Pratik –