Google AnalyticsReporting.v4 ПРОТИВ веб-сайта Analytics

#c# #asp.net #asp.net-core #google-analytics-api

#c# #asp.net #asp.net-ядро #google-analytics-api

Вопрос:

У меня есть система, которая извлекает данные отчета из API аналитики (Google.Apis.AnalyticsReporting.v4.Data.Report) и я вижу странные различия между данными, возвращаемыми этим, и данными, которые я вижу на реальном веб-сайте Analytics.

Например, на веб-сайте Analytics, если я проверю наличие обычных сеансов за февраль 2019 года и март 2019 года, я могу увидеть:

30,100 for March

Когда я запрашиваю API, я вижу 30 100 за март, если я ищу только 2019-03-01 to 2019-03-31 в своем диапазоне дат со следующими параметрами:

 var reportRequest = new ReportRequest
{
    DateRanges = new DateRange() {
        StartDate = "2019-03-01",
        EndDate = "2019-03-31"
    },
    Dimensions = new List<Dimension>().Add(new Dimension()
    {
        Name = "ga:yearMonth"
    },
    new Dimension() {
        Name = "ga:segment"
    }),
    Metrics = new List<Metric>().Add(new Metric()
    {
        Expression = "ga:sessions",
        Alias = "Sessions"
    }),
    ViewId = "[MYID]",
    OrderBys = new List<OrderBy>().Add(new OrderBy() {
        FieldName = "ga:yearMonth",
        SortOrder = "ASCENDING"
    });,
    Segments = new List<Segment>().Add(new Segment() {
        SegmentId = "gaid::-5" //organic
    }),
    FiltersExpression = "",
    IncludeEmptyRows = false
};
  

Если я расширю диапазон дат при вызове API, чтобы включить Feb so:
2019-02-01 для 2019-03-31 использования тех же параметров, я получаю увеличение sessions…so что-то вроде 30 700, например.

 var reportRequest = new ReportRequest
{
    DateRanges = new DateRange() {
        StartDate = "2019-02-01",
        EndDate = "2019-03-31"
    },
    Dimensions = new List<Dimension>().Add(new Dimension()
    {
        Name = "ga:yearMonth"
    },
    new Dimension() {
        Name = "ga:segment"
    }),
    Metrics = new List<Metric>().Add(new Metric()
    {
        Expression = "ga:sessions",
        Alias = "Sessions"
    }),
    ViewId = "[MYID]",
    OrderBys = new List<OrderBy>().Add(new OrderBy() {
        FieldName = "ga:yearMonth",
        SortOrder = "ASCENDING"
    });,
    Segments = new List<Segment>().Add(new Segment() {
        SegmentId = "gaid::-5" //organic
    }),
    FiltersExpression = "",
    IncludeEmptyRows = false
};
  

Я делаю Google.Apis.AnalyticsReporting.v4.Data.ReportRequest

Комментарии:

1. Вам может понадобиться сниффер, такой как wireshark или fiddler, чтобы разобраться в этом. Сначала проверьте статус ответа и посмотрите, получаете ли вы 200 OK. Если вы не получаете 200, то возникает ошибка. Затем сравните первоначальный запрос данных, которые вы получаете в браузере, с приложением и посмотрите, совпадают ли http-заголовки. Вероятно, API использует браузер по умолчанию, установленный на ПК (например, IE), но веб-сайт поддерживает только Chrome. Это будет очевидно при сравнении заголовков.

2. проверьте ответ, убедитесь, что он говорит isgolden, затем проверьте частоту дискретизации. возможно, вы получаете выборочные данные. Затем убедитесь, что вы включили все измерения и показатели в отчет с веб-сайта и тот, который вы отправляете в api. они должны быть одинаковыми, иначе ваша аналитика не вернет одинаковые результаты.

3.@DaImTo в нем говорится, dataIsGolden=true но я вижу значения как samplesReadCounts в возвращаемых данных, так и samplingSpaceSizes в возвращаемых данных

4. сократите диапазон дат для получения выборочных данных. Кроме того, сделайте снимок экрана фактического отчета, который вы пытаетесь сравнить, покажите мне разницу, пожалуйста

5. ОК. Я мог бы попробовать добавить несколько диапазонов дат за 1 месяц в пакетную группу, а не один набор, охватывающий N месяцев. Может быть, это поможет.