2016-09-06 8 views
2

Google.Apis.AnalyticsReporting.v4を使用して、シンプルなクエリを発行して、都市別のジオ/ロケーションデータを取得しています。 WebインタフェースでウェブインターフェイスとAPIの相違

、私は以下を参照してください

City       Sessions 
Saint Cloud 
Jun 15, 2016 - Jun 30, 2016 60,279

APIレスポンスでは、私は、以下を参照してください。

"dimensions": [ 
    "Saint Cloud" 
], 
"metrics": [ 
    { 
    "values": [ 
     "60300" 
    ] 
    } 

これらの番号が一致しません。

ここフィドラーでJSONのリクエストボディです:

{ 
    "reportRequests": [{ 
     "dateRanges": [{ 
      "endDate": "2016-06-30", 
      "startDate": "2016-06-15" 
     }, { 
      "endDate": "2015-06-30", 
      "startDate": "2015-06-15" 
     }], 
     "dimensions": [{ 
      "name": "ga:city" 
     }], 
     "metrics": [{ 
      "expression": "ga:sessions" 
     }], 
     "orderBys": [{ 
      "fieldName": "ga:sessions", 
      "orderType": "VALUE", 
      "sortOrder": "DESCENDING" 
     }], 
     "pageSize": 10, 
     "samplingLevel": "LARGE", 
     "viewId": "123" 
    }] 
} 

は、私は、様々なサンプリングのレベルを試してみたと私は同じ結果を得ます。

ウェブレポートはではありません。には、このレポートに基づいたサンプリングボックスがありません。私はセグメントを追加していません。

APIの結果をWebインターフェイスと正確に一致させる方法はありますか?その理由は、ドメインエキスパートにレポートの検証を依頼する必要があり、このユーザーはウェブインターフェイスを真実のソースとして使用するためです。

答えて

1

問題は、APIが都市名に基づいてデータを集約しており、都市名が一意ではないということです。この場合、Saint Cloud、MNおよびSaint Cloud、FLがある。ウェブインターフェイスはではなく、を集約します。都市名にIncludeフィルタを追加すると、これを見ることができます。

enter image description here

注60279 + 21 = 60300つまり、結果は、APIによって戻さ。

回避策は、クエリにga:cityIdの二次元を追加することです:私はバグこれを呼びたい

"dimensions": [ 
    "Saint Cloud", 
    "1020086" 
], 
"metrics": [ 
    { 
    "values": [ 
     "60279" 
    ] 
    } 

"dimensions": [{ 
    "name": "ga:city" 
}, { 
    "name": "ga:cityId" 
}] 

これは正しい結果が得られます。

+0

私はそれをバグと呼んでいません。都市名は世界でユニークではありません。ウェブインタフェースは都市IDを使用する可能性が最も高いです。 – DaImTo

+0

@DaImTo確かに、都市名による集約は、ほとんどの場合、ユーザーが意図するものではありません。明白な道が正しい結果につながる成功のピットを見たいと思います。 – TrueWill

関連する問題