tap-playstore
is a Singer tap to extract Google Play Store Console Reports that are available on google cloud storage.
The following streams can be integrated using this tap:
- stats_by_dimension_buyers_7d
- stats_by_dimension_crashes
- stats_by_dimension_gcm
- stats_by_dimension_installs
- stats_by_dimension_ratings
- stats_by_dimension_retained_installers
- stats_overview_crashes
- stats_overview_gcm
- stats_overview_installs
- stats_overview_ratings
- reviews
- store_performance_country
- store_performance_traffic_source
- subscriptions_country
- earnings
- play_balance_krw
- sales_reports
note: the streams prefixed with stats_by_dimension
consolidate all reports by dimension for the given metric into one common stream.
Built with the Meltano Tap SDK for Singer Taps.
https://github.com/haleemur/tap-playstore
The project's source can be viewed on github
Install from PyPi:
pipx install tap-playstore
Install from GitHub:
pipx install git+https://github.com/haleemur/tap-playstore.git@main
catalog
state
discover
about
stream-maps
batch
Setting | Required | Default | Description |
---|---|---|---|
service_account_json_file | False | None | Google Cloud Service Account JSON file |
service_account_json_str | False | None | Google Cloud Service Account JSON string |
start_date | True | None | The earliest record date to sync |
bucket_name | True | None | The GCS Bucket where Play Console Reports are stored. |
stream_maps | False | None | Config object for stream maps capability. For more information check out Stream Maps. |
stream_map_config | False | None | User-defined config values to be used within map expressions. |
NOTE: At least one of [service_account_json_file
, service_account_json_str
] are required.
A full list of supported settings and capabilities for this tap is available by running:
tap-playstore --about
This Singer tap will automatically import any environment variables within the working directory's
.env
if the --config=ENV
is provided, such that config values will be considered if a matching
environment variable is set either in the terminal context or in the .env
file.
You can easily run tap-playstore
by itself or in a pipeline using Meltano.
tap-playstore --version
tap-playstore --help
tap-playstore --config CONFIG --discover > ./catalog.json
Follow these instructions to contribute to this project.
pipx install poetry
poetry install
poetry run pre-commit install
Tests require a test_config.json
file to be present. Currently, running tests require an active connection to google cloud.
TODO: write proper mocks for google cloud storage.
The test_config.json
file should mimic the structure of sample_config.json
file.
{
"start_date": "2024-01-01",
"bucket_name": "pubsite_prod_rev_00000000000123456789",
"service_account_json_file": "test_credentials.json"
}
Create tests within the tests
subfolder and
then run:
poetry run pytest
You can also test the tap-playstore
CLI interface directly using poetry run
:
poetry run tap-playstore --help
Testing with Meltano
Note: This tap will work in any Singer environment and does not require Meltano. Examples here are for convenience and to streamline end-to-end orchestration scenarios.
Next, install Meltano (if you haven't already) and any needed plugins:
# Install meltano
pipx install meltano
# Initialize meltano within this directory
cd tap-playstore
meltano install
Update the meltano config (or populate the environment variables / modify your .env
file)
config:
start_date: '2024-01-01T00:00:00Z'
service_account_json_file: $GOOGLE_PLAY_CREDENTIALS_FILE
bucket_name: $GOOGLE_PLAY_BUCKET
Now you can test and orchestrate using Meltano:
# Test invocation:
meltano invoke tap-playstore --version
# OR run a test `elt` pipeline:
meltano elt tap-playstore target-jsonl
See the dev guide for more instructions on how to use the SDK to develop your own taps and targets.