Skip to main content

A package to simplify fetching and transforming data from the Google Analytics Data GA4 API

Project description

Introduction

This package simplifies fetching and transforming data from the Google Analytics Data GA4 API. The GA4 API returns data in a Google object, which can be a hassle to parse and transform. Using this package, you can create a dictionary with your Google Analytics Property ID, as well as the desired Dimensions, Metrics, Order Bys, and Date Ranges you would like to query. By running the function run_report_return_json(...) in google_analytics_data_json.py, you can call the GA4 API and retrieve data in JSON format. Using the Google GA4 Query Explorer, you can find all possible Metrics, Dimensions, Order Bys, and Date Ranges.

Installation

pip install google-analytics-data-json

Environment Variables

  1. After installing the package in your virtual environment, add the credentials.json file to your project.
  2. Optional: Set an environment variable named GOOGLE_APPLICATION_CREDENTIALS equal to the path of the previously mentioned credentials.json file.
  3. Optional: Set the GOOGLE_ANALYTICS_PROPERTY_ID environment variable (required for unit tests).

Running The Project and Examples

The simpelest way to run the project is to import the function run_report_return_json(...) from the file google_analytics_data_json. This function takes one parameter called an analytics_dictionary, which is used to fetch data from the API and return it in JSON format. The structure of the analytics dictionary should look like:

from google_analytics_data_json.google_analytics_data_json import run_report_return_json

analytics_dictionary = {
    "property_id": "<your property_id>",
    "dimension_names": ["date", "country", "deviceCategory"],
    "metric_names": ["totalUsers", "newUsers"], 
    "order_by_names": [
        {
            "type": "dimension", 
            "value": "date", 
            "descending": False
        },
        {
            "type": "dimension",
            "value": "country", 
            "descending": True
        },
        {
            "type": "metric",
            "value": "newUsers", 
            "descending": True
        }
    ],
    "date_range_values": [
        {
            "start_date": "2022-07-01",
            "end_date": "2022-07-04"
        }
    ]
}

# uses GOOGLE_APPLICATION_CREDENTIALS environment variable path
ga_data: List[dict] = run_report_return_json(analytics_dictionary)

# uses credentials in dict, from a secret manager or similar
from google.oauth2 import service_account
service_account_credentials = service_account.Credentials.from_service_account_info(ga_credentials_secret_dict)
ga_data: List[dict] = run_report_return_json(analytics_dictionary, service_account_credentials=service_account_credentials)

It is worth noting that the dimension_names, metric_names, order_by_names, and date_range_values are list objects, with the order_by_names and date_range_values requiring nested dictionaries as shown above.

Although multiple date ranges can be used, the results from the API can be confusing if the dimension date is used - therefore, I suggest only using one date range dictionary if you plan querying the date dimension.

If you would like to take advantage of only the API call or only the data transformation, you can import the classes Ga4Request from create_ga4_request.py or TransformGa4Data from transform_ga4_data.py. This allows you to control the exact methods which are called in each class, although in most cases you will use all of them.

Build and Test

The build and tests for the project are hosted in the project repository.

Use python -m unittest to run the unit tests. A coverage report can also be generated using coverage run -m unittest and then running coverage html.

The following environment variables should be set for unit tests:

  • GOOGLE_APPLICATION_CREDENTIALS
  • GOOGLE_ANALYTICS_PROPERTY_ID

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

google_analytics_data_json-0.0.2.2.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file google_analytics_data_json-0.0.2.2.tar.gz.

File metadata

File hashes

Hashes for google_analytics_data_json-0.0.2.2.tar.gz
Algorithm Hash digest
SHA256 b448d6c6019755b537940a386d87ed89e004c38e70c0ef874cd4295c8d8224a7
MD5 8c893375f78b8c645e18ba14e59169c5
BLAKE2b-256 803eedab98a6199797eef76139ccccbf02da4dea51ddc089b046382dc0f12b69

See more details on using hashes here.

File details

Details for the file google_analytics_data_json-0.0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for google_analytics_data_json-0.0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9953a712c6cb483938c911ff2f79c250b035ebd0b9abe04dde1399c1443414df
MD5 559c91aa2844b63ebf9c795f4adccdb4
BLAKE2b-256 bb48eac5feac96c9fcfcb487ab287d61a3af8f0cbdcc048abef8ef1b4e47256c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page