From 3f327f60f34dfbe12013de8a8ad215fdfd5e2ec2 Mon Sep 17 00:00:00 2001 From: Denys Davydov Date: Tue, 25 Apr 2023 19:55:55 +0300 Subject: [PATCH] Source Google Analytics Data API: implement advanced reports (#25179) * #11689 source Google Analytics Data API: implement advanced reports * #11689 source GA data API: upd changelog * #11689 source GA data API: fix CAT * #11689 source GA data API: fix CAT * Have empty dict as default option * Remove dateRange and dimensions from required params * Generate source defintions manually --------- Co-authored-by: Arsen Losenko <20901439+arsenlosenko@users.noreply.github.com> --- .../src/main/resources/seed/oss_catalog.json | 6 +- .../resources/seed/source_definitions.yaml | 2 +- .../src/main/resources/seed/source_specs.yaml | 6 +- .../Dockerfile | 2 +- .../acceptance-test-config.yml | 16 +- .../integration_tests/configured_catalog.json | 36 ++- .../integration_tests/expected_records.jsonl | 233 +++++++----------- .../incremental_catalog.json | 100 ++++++++ .../defaults/custom_reports_schema.json | 112 +++++++++ .../source.py | 61 ++++- .../spec.json | 4 +- .../unit_tests/test_source.py | 6 +- connectors.md | 2 +- .../sources/google-analytics-data-api.md | 34 +-- 14 files changed, 431 insertions(+), 189 deletions(-) create mode 100644 airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/incremental_catalog.json diff --git a/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json b/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json index e8c598592f9..5e4b9bf53cd 100644 --- a/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json +++ b/airbyte-config-oss/init-oss/src/main/resources/seed/oss_catalog.json @@ -14419,7 +14419,7 @@ "sourceDefinitionId": "3cc2eafd-84aa-4dca-93af-322d9dfeec1a", "name": "Google Analytics 4 (GA4)", "dockerRepository": "airbyte/source-google-analytics-data-api", - "dockerImageTag": "0.1.3", + "dockerImageTag": "0.2.0", "documentationUrl": "https://docs.airbyte.com/integrations/sources/google-analytics-data-api", "icon": "google-analytics.svg", "sourceType": "api", @@ -14505,7 +14505,7 @@ "date_ranges_start_date": { "type": "string", "title": "Start Date", - "description": "The start date from which to replicate report data in the format YYYY-MM-DD. Data generated before this date will not be included in the report.", + "description": "The start date from which to replicate report data in the format YYYY-MM-DD. Data generated before this date will not be included in the report. Not applied to custom Cohort reports.", "format": "date", "order": 2 }, @@ -14518,7 +14518,7 @@ "window_in_days": { "type": "integer", "title": "Data request time increment in days", - "description": "The time increment used by the connector when requesting data from the Google Analytics API. More information is available in the the docs. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364.", + "description": "The time increment used by the connector when requesting data from the Google Analytics API. More information is available in the the docs. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364. Not applied to custom Cohort reports.", "examples": [ 30, 60, 90, 120, 200, 364 ], "minimum": 1, "maximum": 364, diff --git a/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml b/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml index 01360c01777..22e5fcfa7be 100644 --- a/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml +++ b/airbyte-config-oss/init-oss/src/main/resources/seed/source_definitions.yaml @@ -823,7 +823,7 @@ - name: Google Analytics 4 (GA4) sourceDefinitionId: 3cc2eafd-84aa-4dca-93af-322d9dfeec1a dockerRepository: airbyte/source-google-analytics-data-api - dockerImageTag: 0.1.3 + dockerImageTag: 0.2.0 documentationUrl: https://docs.airbyte.com/integrations/sources/google-analytics-data-api icon: google-analytics.svg sourceType: api diff --git a/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml b/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml index d97b228ccb4..633f256c879 100644 --- a/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml +++ b/airbyte-config-oss/init-oss/src/main/resources/seed/source_specs.yaml @@ -6060,7 +6060,7 @@ oauthFlowOutputParameters: - - "access_token" - - "refresh_token" -- dockerImage: "airbyte/source-google-analytics-data-api:0.1.3" +- dockerImage: "airbyte/source-google-analytics-data-api:0.2.0" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/google-analytics-data-api" connectionSpecification: @@ -6142,7 +6142,7 @@ title: "Start Date" description: "The start date from which to replicate report data in the\ \ format YYYY-MM-DD. Data generated before this date will not be included\ - \ in the report." + \ in the report. Not applied to custom Cohort reports." format: "date" order: 2 custom_reports: @@ -6164,7 +6164,7 @@ \ causing inaccuracies in the returned results. We recommend setting this\ \ to 1 unless you have a hard requirement to make the sync faster at the\ \ expense of accuracy. The minimum allowed value for this field is 1,\ - \ and the maximum is 364." + \ and the maximum is 364. Not applied to custom Cohort reports." examples: - 30 - 60 diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/Dockerfile b/airbyte-integrations/connectors/source-google-analytics-data-api/Dockerfile index 91818294f89..8e47ffa219a 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/Dockerfile +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/Dockerfile @@ -28,5 +28,5 @@ COPY source_google_analytics_data_api ./source_google_analytics_data_api ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.1.3 +LABEL io.airbyte.version=0.2.0 LABEL io.airbyte.name=airbyte/source-google-analytics-data-api diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/acceptance-test-config.yml b/airbyte-integrations/connectors/source-google-analytics-data-api/acceptance-test-config.yml index dcdaa79f3e7..d6ae13d132a 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/acceptance-test-config.yml @@ -58,6 +58,14 @@ acceptance_tests: bypass_reason: "dynamically created field" - name: averageSessionDuration bypass_reason: "dynamically created field" + cohort_report: + - name: uuid + bypass_reason: "dynamically created field" + pivot_report: + - name: uuid + bypass_reason: "dynamically created field" + - name: sessions + bypass_reason: "volatile data" full_refresh: tests: - config_path: "secrets/config.json" @@ -95,9 +103,15 @@ acceptance_tests: bypass_reason: "dynamically created field" - name: averageSessionDuration bypass_reason: "dynamically created field" + cohort_report: + - name: uuid + bypass_reason: "dynamically created field" + pivot_report: + - name: uuid + bypass_reason: "dynamically created field" incremental: tests: - config_path: "secrets/config.json" - configured_catalog_path: "integration_tests/configured_catalog.json" + configured_catalog_path: "integration_tests/incremental_catalog.json" future_state: future_state_path: "integration_tests/abnormal_state.json" diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/configured_catalog.json index 0900aa6dbfe..390b4952d02 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/configured_catalog.json +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/configured_catalog.json @@ -9,7 +9,7 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -21,7 +21,7 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -33,7 +33,7 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -45,7 +45,7 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -57,7 +57,7 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -69,7 +69,7 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -81,7 +81,7 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -93,7 +93,27 @@ "default_cursor_field": ["date"], "source_defined_primary_key": [["uuid"]] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "cohort_report", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "full_refresh", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "pivot_report", + "json_schema": {}, + "supported_sync_modes": ["full_refresh"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" } ] diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/expected_records.jsonl index 992b7cf5af2..f63d7d13fdf 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/expected_records.jsonl @@ -1,143 +1,90 @@ -{"stream":"daily_active_users","data":{"uuid":"d740634d-5a99-4c00-8535-cc7dd39cf102","property_id":"314186564","date":"20230126","active1DayUsers":5588},"emitted_at":1678381333675} -{"stream":"daily_active_users","data":{"uuid":"5d856f4a-e129-4ab0-9b03-ad5f9ab36cd3","property_id":"314186564","date":"20230130","active1DayUsers":3044},"emitted_at":1678381333676} -{"stream":"daily_active_users","data":{"uuid":"bea93bd9-7b12-4035-b696-38b9e02d81b4","property_id":"314186564","date":"20230112","active1DayUsers":2783},"emitted_at":1678381333676} -{"stream":"daily_active_users","data":{"uuid":"537e93bf-d7af-4078-ab87-371a0ffbdf8c","property_id":"314186564","date":"20230228","active1DayUsers":2626},"emitted_at":1678381333979} -{"stream":"daily_active_users","data":{"uuid":"c842e31f-63ba-4610-845f-12d0683ff8b4","property_id":"314186564","date":"20230214","active1DayUsers":2582},"emitted_at":1678381333979} -{"stream":"daily_active_users","data":{"uuid":"11aa822c-5eeb-4ef2-b8aa-a71c8555c399","property_id":"314186564","date":"20230301","active1DayUsers":2562},"emitted_at":1678381333979} -{"stream":"daily_active_users","data":{"uuid":"9e6a5066-dfee-40e1-8a86-6e58ae79163a","property_id":"314186564","date":"20230213","active1DayUsers":2518},"emitted_at":1678381333979} -{"stream":"daily_active_users","data":{"uuid":"3a86c4fa-1d22-4d6d-96d4-aa1aa3ed4aae","property_id":"314186564","date":"20230205","active1DayUsers":1470},"emitted_at":1678381333980} -{"stream":"daily_active_users","data":{"uuid":"cb7ecf2b-96de-460f-8825-d79cc19e0017","property_id":"314186564","date":"20230204","active1DayUsers":1350},"emitted_at":1678381333980} -{"stream":"daily_active_users","data":{"uuid":"cf843a52-5509-4bc1-9be7-2680e444f72c","property_id":"314186564","date":"20230212","active1DayUsers":1269},"emitted_at":1678381333980} -{"stream":"daily_active_users","data":{"uuid":"4100edb8-2d5a-4b1c-98c3-32c24555f6e4","property_id":"314186564","date":"20230219","active1DayUsers":1211},"emitted_at":1678381333980} -{"stream":"daily_active_users","data":{"uuid":"6f06e832-f653-44ab-aca5-1b8bb95817cf","property_id":"314186564","date":"20230226","active1DayUsers":1189},"emitted_at":1678381333980} -{"stream":"daily_active_users","data":{"uuid":"e9204355-3a80-42a7-ad19-213438c8318a","property_id":"314186564","date":"20230211","active1DayUsers":958},"emitted_at":1678381333980} -{"stream":"daily_active_users","data":{"uuid":"4bc46fdf-3e61-4152-ab9a-de5de6317094","property_id":"314186564","date":"20230225","active1DayUsers":839},"emitted_at":1678381333980} -{"stream":"daily_active_users","data":{"uuid":"a1358391-2d0b-4a76-904c-fcc1b7ede7df","property_id":"314186564","date":"20230306","active1DayUsers":5849},"emitted_at":1678381334875} -{"stream":"daily_active_users","data":{"uuid":"0a018ec9-a1be-4027-b55d-150000c604ff","property_id":"314186564","date":"20230307","active1DayUsers":4285},"emitted_at":1678381334875} -{"stream":"daily_active_users","data":{"uuid":"2e83053e-62fd-4ade-84b5-25b44e824108","property_id":"314186564","date":"20230308","active1DayUsers":3180},"emitted_at":1678381334875} -{"stream":"daily_active_users","data":{"uuid":"1b0b5f7a-235b-4825-b892-d427df3eeb27","property_id":"314186564","date":"20230305","active1DayUsers":1358},"emitted_at":1678381334876} -{"stream":"daily_active_users","data":{"uuid":"c859dee1-408c-4951-9ff8-15ac042ccf14","property_id":"314186564","date":"20230304","active1DayUsers":1115},"emitted_at":1678381334876} -{"stream":"weekly_active_users","data":{"uuid":"934cdcae-1d0a-4681-93ca-31e4f2c4aa10","property_id":"314186564","date":"20230130","active7DayUsers":16837},"emitted_at":1678381336463} -{"stream":"weekly_active_users","data":{"uuid":"41bedd57-61a6-479d-812a-f732a1accb06","property_id":"314186564","date":"20230129","active7DayUsers":16577},"emitted_at":1678381336463} -{"stream":"weekly_active_users","data":{"uuid":"307ec546-fae5-4e95-8586-5615dc9d4a7d","property_id":"314186564","date":"20230128","active7DayUsers":16537},"emitted_at":1678381336463} -{"stream":"weekly_active_users","data":{"uuid":"11585f70-3b55-4050-bcd7-5479a8e5624c","property_id":"314186564","date":"20230127","active7DayUsers":16368},"emitted_at":1678381336463} -{"stream":"weekly_active_users","data":{"uuid":"eeb8a338-e038-4eb2-a47a-be13788bf5a3","property_id":"314186564","date":"20230126","active7DayUsers":15828},"emitted_at":1678381336463} -{"stream":"weekly_active_users","data":{"uuid":"7adb80f4-66af-461a-9c33-a4d338ae87b5","property_id":"314186564","date":"20230114","active7DayUsers":12970},"emitted_at":1678381336464} -{"stream":"weekly_active_users","data":{"uuid":"cb72a0da-164f-4f19-95cd-65fd24ab70ab","property_id":"314186564","date":"20230116","active7DayUsers":12895},"emitted_at":1678381336464} -{"stream":"weekly_active_users","data":{"uuid":"5ecba746-b1aa-4235-a5a8-fb94205615ca","property_id":"314186564","date":"20230202","active7DayUsers":15770},"emitted_at":1678381336755} -{"stream":"weekly_active_users","data":{"uuid":"c23432db-5910-40bc-9604-bd3cd8eae79b","property_id":"314186564","date":"20230205","active7DayUsers":15623},"emitted_at":1678381336755} -{"stream":"weekly_active_users","data":{"uuid":"4a6cd27c-cfbf-4cac-b367-bc749252c054","property_id":"314186564","date":"20230204","active7DayUsers":15553},"emitted_at":1678381336755} -{"stream":"weekly_active_users","data":{"uuid":"892dadfd-6229-481f-bdaa-3c9c5a840054","property_id":"314186564","date":"20230222","active7DayUsers":15450},"emitted_at":1678381336755} -{"stream":"weekly_active_users","data":{"uuid":"9ae54cbe-fd5e-4cda-ab37-bd2f0b0840e6","property_id":"314186564","date":"20230203","active7DayUsers":15362},"emitted_at":1678381336755} -{"stream":"weekly_active_users","data":{"uuid":"cbe3383e-ead1-4afb-b95f-53233b221da7","property_id":"314186564","date":"20230227","active7DayUsers":11582},"emitted_at":1678381336756} -{"stream":"weekly_active_users","data":{"uuid":"5ce683a4-603e-4e17-b98f-658348a5d255","property_id":"314186564","date":"20230225","active7DayUsers":11207},"emitted_at":1678381336756} -{"stream":"weekly_active_users","data":{"uuid":"641cb10e-8816-4dc8-8843-51a9e812ee6e","property_id":"314186564","date":"20230226","active7DayUsers":11152},"emitted_at":1678381336757} -{"stream":"weekly_active_users","data":{"uuid":"e4ea2069-6254-42e6-a14e-125f22d558e4","property_id":"314186564","date":"20230308","active7DayUsers":18126},"emitted_at":1678381337525} -{"stream":"weekly_active_users","data":{"uuid":"6b3d7cca-2abc-471e-9bc9-da6e4d435d71","property_id":"314186564","date":"20230307","active7DayUsers":17555},"emitted_at":1678381337527} -{"stream":"weekly_active_users","data":{"uuid":"83473b8d-0716-4ecc-8700-baa6e4cd77be","property_id":"314186564","date":"20230306","active7DayUsers":15874},"emitted_at":1678381337530} -{"stream":"weekly_active_users","data":{"uuid":"23df8c7f-237e-4fa0-98ad-4d230528c97d","property_id":"314186564","date":"20230302","active7DayUsers":12087},"emitted_at":1678381337530} -{"stream":"four_weekly_active_users","data":{"uuid":"2834dea3-9cfd-4649-b924-8e16c63aaa92","property_id":"314186564","date":"20230130","active28DayUsers":48553},"emitted_at":1678381339570} -{"stream":"four_weekly_active_users","data":{"uuid":"463276cf-364b-4103-a351-4767d71e9fe8","property_id":"314186564","date":"20230129","active28DayUsers":47206},"emitted_at":1678381339571} -{"stream":"four_weekly_active_users","data":{"uuid":"a27d065b-8e3e-4200-b5cb-91f07569f9c6","property_id":"314186564","date":"20230128","active28DayUsers":46942},"emitted_at":1678381339571} -{"stream":"four_weekly_active_users","data":{"uuid":"28322223-18ca-42f1-9b58-5291921ce283","property_id":"314186564","date":"20230205","active28DayUsers":53252},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"150e0866-7bef-457d-ba05-1511a91ca247","property_id":"314186564","date":"20230213","active28DayUsers":53161},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"b5b3c0c5-53f6-4aed-b7e1-eb481b098d6f","property_id":"314186564","date":"20230214","active28DayUsers":53007},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"96575bb1-77c6-4590-91b7-df2e33c9ee45","property_id":"314186564","date":"20230210","active28DayUsers":52974},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"2124baf5-b40a-4c84-aaae-d11a14eb5b8a","property_id":"314186564","date":"20230212","active28DayUsers":52950},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"c915e1a0-d294-4659-a92b-997e07471947","property_id":"314186564","date":"20230204","active28DayUsers":52836},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"86a9b1a2-6e80-48e0-b3be-dc7628c39a95","property_id":"314186564","date":"20230211","active28DayUsers":52772},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"9f00870e-c0db-41d1-940c-6784533c91c8","property_id":"314186564","date":"20230223","active28DayUsers":52720},"emitted_at":1678381340113} -{"stream":"four_weekly_active_users","data":{"uuid":"51c9744f-3658-4965-9050-4ab9208581a4","property_id":"314186564","date":"20230203","active28DayUsers":52096},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"472b845d-044b-41c2-adcb-9cdda71f4777","property_id":"314186564","date":"20230224","active28DayUsers":51840},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"951547b6-2713-40f2-9938-3cc75c0d0ef9","property_id":"314186564","date":"20230202","active28DayUsers":51576},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"d60c7684-e66a-4cdc-86b4-afeda1fd1b84","property_id":"314186564","date":"20230225","active28DayUsers":51554},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"69fc3620-304f-41f3-9006-bd1c9272d310","property_id":"314186564","date":"20230226","active28DayUsers":51297},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"7291c49c-6af8-4723-baaf-7d4c22a0fb91","property_id":"314186564","date":"20230227","active28DayUsers":50957},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"79a678a4-68d6-43ce-b20a-5d1aae10577f","property_id":"314186564","date":"20230201","active28DayUsers":50822},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"ecc068ac-45ce-4cf2-9f5e-e52a9f618996","property_id":"314186564","date":"20230228","active28DayUsers":50206},"emitted_at":1678381340114} -{"stream":"four_weekly_active_users","data":{"uuid":"7dfb2df2-e4c3-4ec6-9e28-8ed84af37edc","property_id":"314186564","date":"20230131","active28DayUsers":49804},"emitted_at":1678381340114} -{"stream":"devices","data":{"uuid":"3730e4f7-be18-46e5-afc4-cc19ab0f6a94","property_id":"314186564","date":"20230126","deviceCategory":"desktop","operatingSystem":"Macintosh","browser":"Chrome","totalUsers":1889,"newUsers":1081,"sessions":3323,"sessionsPerUser":2.0525015441630634,"averageSessionDuration":190.25625341889858,"screenPageViews":7700,"screenPageViewsPerSession":2.3171832681312066,"bounceRate":0.534456816130003},"emitted_at":1678381343155} -{"stream":"devices","data":{"uuid":"d55035f9-73d3-411a-8a24-630b74fccb17","property_id":"314186564","date":"20230114","deviceCategory":"desktop","operatingSystem":"Macintosh","browser":"Chrome","totalUsers":243,"newUsers":116,"sessions":430,"sessionsPerUser":2.4571428571428573,"averageSessionDuration":149.79113474418602,"screenPageViews":689,"screenPageViewsPerSession":1.6023255813953488,"bounceRate":0.6627906976744186},"emitted_at":1678381343179} -{"stream":"devices","data":{"uuid":"092d0654-402e-4eb0-839c-f538f218d48d","property_id":"314186564","date":"20230113","deviceCategory":"mobile","operatingSystem":"iOS","browser":"Safari","totalUsers":240,"newUsers":199,"sessions":282,"sessionsPerUser":1.247787610619469,"averageSessionDuration":116.2066634539007,"screenPageViews":401,"screenPageViewsPerSession":1.4219858156028369,"bounceRate":0.7056737588652482},"emitted_at":1678381343179} -{"stream":"devices","data":{"uuid":"cbd4ebc6-2c4a-403e-b809-d19b347e98e8","property_id":"314186564","date":"20230128","deviceCategory":"mobile","operatingSystem":"Android","browser":"Chrome","totalUsers":236,"newUsers":143,"sessions":306,"sessionsPerUser":1.4232558139534883,"averageSessionDuration":116.41804944444443,"screenPageViews":515,"screenPageViewsPerSession":1.6830065359477124,"bounceRate":0.4803921568627451},"emitted_at":1678381343179} -{"stream":"devices","data":{"uuid":"4c01fcbd-db57-4226-b35e-11960422a743","property_id":"314186564","date":"20230117","deviceCategory":"mobile","operatingSystem":"Android","browser":"Chrome","totalUsers":230,"newUsers":135,"sessions":335,"sessionsPerUser":1.7447916666666667,"averageSessionDuration":111.30464799104477,"screenPageViews":457,"screenPageViewsPerSession":1.364179104477612,"bounceRate":0.5044776119402985},"emitted_at":1678381343180} -{"stream":"devices","data":{"uuid":"08317b82-161b-425f-a29c-7c9b1326d188","property_id":"314186564","date":"20230102","deviceCategory":"mobile","operatingSystem":"Android","browser":"Chrome","totalUsers":226,"newUsers":160,"sessions":277,"sessionsPerUser":1.357843137254902,"averageSessionDuration":116.45424140433212,"screenPageViews":371,"screenPageViewsPerSession":1.339350180505415,"bounceRate":0.4657039711191336},"emitted_at":1678381343180} -{"stream":"devices","data":{"uuid":"e3e8cfe4-2a79-448c-8ccb-1d686744cf0f","property_id":"314186564","date":"20230101","deviceCategory":"desktop","operatingSystem":"Windows","browser":"Chrome","totalUsers":225,"newUsers":125,"sessions":329,"sessionsPerUser":1.848314606741573,"averageSessionDuration":130.99515609726444,"screenPageViews":426,"screenPageViewsPerSession":1.2948328267477203,"bounceRate":0.6261398176291794},"emitted_at":1678381343180} -{"stream":"devices","data":{"uuid":"e6d3ef35-fbcb-4d88-b543-d4d5e4ce7959","property_id":"314186564","date":"20230107","deviceCategory":"desktop","operatingSystem":"Macintosh","browser":"Chrome","totalUsers":220,"newUsers":89,"sessions":333,"sessionsPerUser":2.176470588235294,"averageSessionDuration":136.88719382882883,"screenPageViews":407,"screenPageViewsPerSession":1.2222222222222223,"bounceRate":0.6996996996996997},"emitted_at":1678381343180} -{"stream":"devices","data":{"uuid":"0f3bf211-b9a3-41fa-9e47-dded2b3b500a","property_id":"314186564","date":"20230116","deviceCategory":"mobile","operatingSystem":"Android","browser":"Chrome","totalUsers":218,"newUsers":115,"sessions":351,"sessionsPerUser":1.9285714285714286,"averageSessionDuration":99.59775829629629,"screenPageViews":406,"screenPageViewsPerSession":1.1566951566951567,"bounceRate":0.5641025641025641},"emitted_at":1678381343180} -{"stream":"devices","data":{"uuid":"d6e3a43e-76e8-463d-85f7-1ea3a27fb7d8","property_id":"314186564","date":"20230129","deviceCategory":"desktop","operatingSystem":"Linux","browser":"Firefox","totalUsers":14,"newUsers":7,"sessions":16,"sessionsPerUser":1.4545454545454546,"averageSessionDuration":134.647638625,"screenPageViews":36,"screenPageViewsPerSession":2.25,"bounceRate":0.3125},"emitted_at":1678381343211} -{"stream":"devices","data":{"uuid":"a2dbbe29-1522-4fe2-86af-e607f1a2c6f2","property_id":"314186564","date":"20230130","deviceCategory":"desktop","operatingSystem":"Windows","browser":"Opera","totalUsers":14,"newUsers":9,"sessions":17,"sessionsPerUser":1.4166666666666667,"averageSessionDuration":150.37403394117646,"screenPageViews":31,"screenPageViewsPerSession":1.8235294117647058,"bounceRate":0.4117647058823529},"emitted_at":1678381343211} -{"stream":"devices","data":{"uuid":"7502960e-587d-4871-80bc-fa10fc081ad9","property_id":"314186564","date":"20230307","deviceCategory":"mobile","operatingSystem":"Android","browser":"YaBrowser","totalUsers":1,"newUsers":0,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":102.720276,"screenPageViews":0,"screenPageViewsPerSession":0,"bounceRate":1},"emitted_at":1678381347026} -{"stream":"devices","data":{"uuid":"23b15459-4201-4797-9106-9b4ecbffc862","property_id":"314186564","date":"20230307","deviceCategory":"mobile","operatingSystem":"Linux","browser":"Chrome","totalUsers":1,"newUsers":1,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":0,"screenPageViews":1,"screenPageViewsPerSession":1,"bounceRate":1},"emitted_at":1678381347026} -{"stream":"devices","data":{"uuid":"b79ee675-8830-436c-8f0b-2b0aba5a5900","property_id":"314186564","date":"20230308","deviceCategory":"desktop","operatingSystem":"Linux","browser":"Edge","totalUsers":1,"newUsers":0,"sessions":1,"sessionsPerUser":0,"averageSessionDuration":0,"screenPageViews":1,"screenPageViewsPerSession":1,"bounceRate":1},"emitted_at":1678381347026} -{"stream":"devices","data":{"uuid":"4f78c49a-88f1-456f-b3d2-01157a9574c0","property_id":"314186564","date":"20230308","deviceCategory":"desktop","operatingSystem":"Linux","browser":"Safari","totalUsers":1,"newUsers":1,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":0.092779,"screenPageViews":1,"screenPageViewsPerSession":1,"bounceRate":1},"emitted_at":1678381347026} -{"stream":"devices","data":{"uuid":"63f2544b-e0a3-4c71-b549-168ab2eedbba","property_id":"314186564","date":"20230308","deviceCategory":"desktop","operatingSystem":"Linux","browser":"YaBrowser","totalUsers":1,"newUsers":0,"sessions":1,"sessionsPerUser":0,"averageSessionDuration":0,"screenPageViews":1,"screenPageViewsPerSession":1,"bounceRate":1},"emitted_at":1678381347026} -{"stream":"devices","data":{"uuid":"68fa7c4d-9c61-45cb-acfb-55cb632125f5","property_id":"314186564","date":"20230308","deviceCategory":"desktop","operatingSystem":"Windows","browser":"YaBrowser","totalUsers":1,"newUsers":0,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":1668.097776,"screenPageViews":1,"screenPageViewsPerSession":1,"bounceRate":0},"emitted_at":1678381347027} -{"stream":"devices","data":{"uuid":"15cd2ca9-07c6-4013-9b0d-f129f7a3ca76","property_id":"314186564","date":"20230308","deviceCategory":"mobile","operatingSystem":"Android","browser":"Android Browser","totalUsers":1,"newUsers":1,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":0,"screenPageViews":1,"screenPageViewsPerSession":1,"bounceRate":1},"emitted_at":1678381347027} -{"stream":"devices","data":{"uuid":"6aaebc5c-831f-4b62-84a7-8972f94d9a9a","property_id":"314186564","date":"20230308","deviceCategory":"mobile","operatingSystem":"Macintosh","browser":"Chrome","totalUsers":1,"newUsers":1,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":0,"screenPageViews":0,"screenPageViewsPerSession":0,"bounceRate":1},"emitted_at":1678381347027} -{"stream":"devices","data":{"uuid":"53bcd195-bb7e-4025-825d-8678186a1a3f","property_id":"314186564","date":"20230308","deviceCategory":"mobile","operatingSystem":"Windows","browser":"Chrome","totalUsers":1,"newUsers":0,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":0,"screenPageViews":0,"screenPageViewsPerSession":0,"bounceRate":0},"emitted_at":1678381347027} -{"stream":"devices","data":{"uuid":"61be0c8d-ebd6-49f7-9a3b-eaa270c74df2","property_id":"314186564","date":"20230308","deviceCategory":"tablet","operatingSystem":"Android","browser":"Coc Coc","totalUsers":1,"newUsers":1,"sessions":2,"sessionsPerUser":2,"averageSessionDuration":0,"screenPageViews":1,"screenPageViewsPerSession":0.5,"bounceRate":1},"emitted_at":1678381347027} -{"stream":"devices","data":{"uuid":"37e512c9-7663-4440-adef-08caba1ed42b","property_id":"314186564","date":"20230308","deviceCategory":"tablet","operatingSystem":"iOS","browser":"Safari","totalUsers":1,"newUsers":1,"sessions":1,"sessionsPerUser":1,"averageSessionDuration":22.754585,"screenPageViews":1,"screenPageViewsPerSession":1,"bounceRate":0},"emitted_at":1678381347027} -{"stream":"locations","data":{"uuid":"59b23b72-df6f-4b57-aa87-b9c52fc5ba6b","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230126","totalUsers":261,"newUsers":186,"sessions":348,"sessionsPerUser":1.43801652892562,"averageSessionDuration":177.4253606494253,"screenPageViews":797,"screenPageViewsPerSession":2.2902298850574714,"bounceRate":0.41954022988505746},"emitted_at":1678381351369} -{"stream":"locations","data":{"uuid":"067cc6e2-06a0-43a6-9d36-545c6cdd9aba","property_id":"314186564","region":"California","country":"United States","city":"San Francisco","date":"20230126","totalUsers":173,"newUsers":102,"sessions":237,"sessionsPerUser":1.5095541401273886,"averageSessionDuration":219.36087900843881,"screenPageViews":585,"screenPageViewsPerSession":2.4683544303797467,"bounceRate":0.4177215189873418},"emitted_at":1678381351369} -{"stream":"locations","data":{"uuid":"3dd8a901-4881-46ac-9367-75efc95171de","property_id":"314186564","region":"California","country":"United States","city":"San Jose","date":"20230126","totalUsers":125,"newUsers":102,"sessions":143,"sessionsPerUser":1.2222222222222223,"averageSessionDuration":159.3054194195804,"screenPageViews":249,"screenPageViewsPerSession":1.7412587412587412,"bounceRate":0.4195804195804196},"emitted_at":1678381351369} -{"stream":"locations","data":{"uuid":"3711890a-805e-417d-bd75-d869ca3172c0","property_id":"314186564","region":"Washington","country":"United States","city":"Seattle","date":"20230126","totalUsers":119,"newUsers":84,"sessions":193,"sessionsPerUser":1.7545454545454546,"averageSessionDuration":103.39999222797927,"screenPageViews":323,"screenPageViewsPerSession":1.6735751295336787,"bounceRate":0.5699481865284974},"emitted_at":1678381351369} -{"stream":"locations","data":{"uuid":"9372b250-d3e0-4063-ba6d-643456ae78ed","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230123","totalUsers":117,"newUsers":63,"sessions":167,"sessionsPerUser":1.7395833333333333,"averageSessionDuration":269.8072515628742,"screenPageViews":538,"screenPageViewsPerSession":3.2215568862275448,"bounceRate":0.49700598802395207},"emitted_at":1678381351369} -{"stream":"locations","data":{"uuid":"1e72f548-0bc9-467d-b8c4-c48275d43554","property_id":"314186564","region":"England","country":"United Kingdom","city":"London","date":"20230126","totalUsers":115,"newUsers":15,"sessions":196,"sessionsPerUser":2.0631578947368423,"averageSessionDuration":75.64311498979592,"screenPageViews":231,"screenPageViewsPerSession":1.1785714285714286,"bounceRate":0.8214285714285714},"emitted_at":1678381351370} -{"stream":"locations","data":{"uuid":"3d583d87-19b2-469e-9c8d-f7fbe8673fff","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230125","totalUsers":114,"newUsers":66,"sessions":171,"sessionsPerUser":1.693069306930693,"averageSessionDuration":314.769004625731,"screenPageViews":747,"screenPageViewsPerSession":4.368421052631579,"bounceRate":0.39766081871345027},"emitted_at":1678381351370} -{"stream":"locations","data":{"uuid":"a32e99fd-7804-4f3f-872e-20ca17adaabe","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230111","totalUsers":108,"newUsers":71,"sessions":156,"sessionsPerUser":1.7333333333333334,"averageSessionDuration":226.08829592307688,"screenPageViews":451,"screenPageViewsPerSession":2.891025641025641,"bounceRate":0.5769230769230769},"emitted_at":1678381351370} -{"stream":"locations","data":{"uuid":"469ff29d-f73d-4ec6-95b9-af454cee1365","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230127","totalUsers":107,"newUsers":54,"sessions":158,"sessionsPerUser":1.880952380952381,"averageSessionDuration":394.91075217721516,"screenPageViews":1063,"screenPageViewsPerSession":6.727848101265823,"bounceRate":0.5189873417721519},"emitted_at":1678381351370} -{"stream":"locations","data":{"uuid":"26c149f6-bbcb-4f92-a5d1-32e1052a6549","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230119","totalUsers":106,"newUsers":59,"sessions":140,"sessionsPerUser":1.5217391304347827,"averageSessionDuration":226.4892927142857,"screenPageViews":304,"screenPageViewsPerSession":2.1714285714285713,"bounceRate":0.4714285714285714},"emitted_at":1678381351370} -{"stream":"locations","data":{"uuid":"aa385c07-0081-4350-99d1-64d1f352e842","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230124","totalUsers":106,"newUsers":49,"sessions":166,"sessionsPerUser":1.711340206185567,"averageSessionDuration":314.4820807349397,"screenPageViews":683,"screenPageViewsPerSession":4.114457831325301,"bounceRate":0.5301204819277109},"emitted_at":1678381351370} -{"stream":"locations","data":{"uuid":"4118cbba-0628-441f-94d8-6aad16d65dc4","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230118","totalUsers":101,"newUsers":64,"sessions":134,"sessionsPerUser":1.425531914893617,"averageSessionDuration":204.23028168656717,"screenPageViews":421,"screenPageViewsPerSession":3.1417910447761193,"bounceRate":0.4701492537313433},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"f31fbc84-53e2-4c87-a0d6-b8fb79be5128","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230130","totalUsers":100,"newUsers":50,"sessions":148,"sessionsPerUser":1.7411764705882353,"averageSessionDuration":588.3146048175676,"screenPageViews":1659,"screenPageViewsPerSession":11.20945945945946,"bounceRate":0.46621621621621623},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"3c54aefd-a080-4a24-92c5-071a511c00f0","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230117","totalUsers":99,"newUsers":53,"sessions":130,"sessionsPerUser":1.6883116883116882,"averageSessionDuration":252.9449443615385,"screenPageViews":310,"screenPageViewsPerSession":2.3846153846153846,"bounceRate":0.49230769230769234},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"f88cec28-9ac0-43e4-a0b7-70943c7b0499","property_id":"314186564","region":"California","country":"United States","city":"Los Angeles","date":"20230126","totalUsers":94,"newUsers":78,"sessions":115,"sessionsPerUser":1.2921348314606742,"averageSessionDuration":115.01889710434781,"screenPageViews":194,"screenPageViewsPerSession":1.6869565217391305,"bounceRate":0.4608695652173913},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"b21cf7b6-1708-4a67-bcf3-8645039c20c7","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230112","totalUsers":94,"newUsers":54,"sessions":125,"sessionsPerUser":1.6025641025641026,"averageSessionDuration":385.297371184,"screenPageViews":393,"screenPageViewsPerSession":3.144,"bounceRate":0.52},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"3e4b220d-2825-48d6-aa5b-e67f608c4761","property_id":"314186564","region":"Karnataka","country":"India","city":"Bengaluru","date":"20230111","totalUsers":92,"newUsers":52,"sessions":115,"sessionsPerUser":1.4375,"averageSessionDuration":266.1262206173913,"screenPageViews":185,"screenPageViewsPerSession":1.608695652173913,"bounceRate":0.4782608695652174},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"aaeafa30-ea15-4e4c-abfe-26e7248fd26b","property_id":"314186564","region":"New York","country":"United States","city":"New York","date":"20230110","totalUsers":92,"newUsers":54,"sessions":134,"sessionsPerUser":1.7402597402597402,"averageSessionDuration":165.56627757462687,"screenPageViews":162,"screenPageViewsPerSession":1.208955223880597,"bounceRate":0.5373134328358209},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"61b39026-477f-4fbb-8a64-d39a38a3ae81","property_id":"314186564","region":"Virginia","country":"United States","city":"Ashburn","date":"20230126","totalUsers":91,"newUsers":69,"sessions":115,"sessionsPerUser":1.3855421686746987,"averageSessionDuration":56.888851956521734,"screenPageViews":140,"screenPageViewsPerSession":1.2173913043478262,"bounceRate":0.6086956521739131},"emitted_at":1678381351371} -{"stream":"locations","data":{"uuid":"cc88c92e-0f4b-4e28-b617-d885d755d654","property_id":"314186564","region":"California","country":"United States","city":"Oakland","date":"20230124","totalUsers":12,"newUsers":4,"sessions":15,"sessionsPerUser":1.5,"averageSessionDuration":129.37265566666667,"screenPageViews":21,"screenPageViewsPerSession":1.4,"bounceRate":0.6},"emitted_at":1678381351464} -{"stream":"locations","data":{"uuid":"1fc85a8b-0c1d-4481-b5f1-db3213dd6e7b","property_id":"314186564","region":"California","country":"United States","city":"San Diego","date":"20230118","totalUsers":12,"newUsers":6,"sessions":16,"sessionsPerUser":1.7777777777777777,"averageSessionDuration":191.2098831875,"screenPageViews":24,"screenPageViewsPerSession":1.5,"bounceRate":0.5},"emitted_at":1678381351464} -{"stream":"locations","data":{"uuid":"cc0645bc-d844-4a74-b7b9-4a17e96b0eff","property_id":"314186564","region":"California","country":"United States","city":"San Diego","date":"20230130","totalUsers":12,"newUsers":8,"sessions":22,"sessionsPerUser":2,"averageSessionDuration":207.01342677272726,"screenPageViews":43,"screenPageViewsPerSession":1.9545454545454546,"bounceRate":0.36363636363636365},"emitted_at":1678381351464} -{"stream":"pages","data":{"uuid":"88a07f5d-684c-4711-a813-a8b9aca86087","property_id":"314186564","date":"20230126","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":2276,"bounceRate":0.7348798674399337},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"e118fcaf-26b2-442b-9e16-3520b5448d19","property_id":"314186564","date":"20230126","hostName":"airbyte.com","pagePathPlusQueryString":"/blog/why-airbyte-made-alpha-and-beta-connectors-free","screenPageViews":2176,"bounceRate":0.3861464968152866},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"30a61f7f-58b2-4629-97e8-1b2590d7bb5f","property_id":"314186564","date":"20230130","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1638,"bounceRate":0.6044857768052516},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"c627bc4b-3959-4bcb-98d9-ad0de7b4b915","property_id":"314186564","date":"20230109","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1594,"bounceRate":0.6356033452807647},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"7b52c8e8-946f-4564-8b23-bb6d9d7f49c2","property_id":"314186564","date":"20230117","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1481,"bounceRate":0.6195266272189349},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"6e600ce8-afba-4645-8825-06df0e00b70a","property_id":"314186564","date":"20230118","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1438,"bounceRate":0.5996376811594203},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"3780cae2-de2a-42bb-b11f-24e56b88ed78","property_id":"314186564","date":"20230110","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1402,"bounceRate":0.6209677419354839},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"8ca47bcc-2fed-47bf-ae41-285a8cbd4acb","property_id":"314186564","date":"20230112","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1384,"bounceRate":0.6355255070682237},"emitted_at":1678381363213} -{"stream":"pages","data":{"uuid":"fc2802e8-7b37-4aa5-b801-e5d7c6e3244e","property_id":"314186564","date":"20230111","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1358,"bounceRate":0.6296529968454259},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"3205cc1f-8f1f-4748-9794-295d51734587","property_id":"314186564","date":"20230119","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1337,"bounceRate":0.6132381570408826},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"cfd090a0-0c40-43b0-b366-6668f79c4de6","property_id":"314186564","date":"20230124","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1327,"bounceRate":0.6260869565217392},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"2d1eef6c-13f1-4ecc-91bf-3fe27cbc7e92","property_id":"314186564","date":"20230123","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1324,"bounceRate":0.5990660440293529},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"cc7235d4-1a60-4594-8f40-884e91a6f4ea","property_id":"314186564","date":"20230127","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1249,"bounceRate":0.6347095871238628},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"0b8be776-1f23-4060-9210-3879849368cb","property_id":"314186564","date":"20230125","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1212,"bounceRate":0.5846042120551924},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"110b98e1-0ab8-49c6-88a0-cf45a18928fa","property_id":"314186564","date":"20230116","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1150,"bounceRate":0.6237698713096139},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"470a6b49-00c8-49e9-a0c7-dbe667460ef1","property_id":"314186564","date":"20230105","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1144,"bounceRate":0.6569940476190477},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"80d446d0-f561-4e90-9451-76b9d7fac99a","property_id":"314186564","date":"20230104","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1124,"bounceRate":0.6132723112128147},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"a6159c64-0d9f-4a58-a7ed-2ec3f670af66","property_id":"314186564","date":"20230113","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1085,"bounceRate":0.6420600858369099},"emitted_at":1678381363214} -{"stream":"pages","data":{"uuid":"65704725-7c22-4f2d-90d6-8205f952367d","property_id":"314186564","date":"20230103","hostName":"airbyte.com","pagePathPlusQueryString":"/","screenPageViews":1082,"bounceRate":0.6127490039840637},"emitted_at":1678381363214} -{"stream":"website_overview","data":{"uuid":"61113a98-9297-42c0-bf4d-ae7ef3eb44d5","property_id":"314186564","date":"20230126","totalUsers":6168,"newUsers":4070,"sessions":8834,"sessionsPerUser":1.580887616320687,"averageSessionDuration":164.98179401697985,"screenPageViews":17314,"screenPageViewsPerSession":1.9599275526375368,"bounceRate":0.528073352954494},"emitted_at":1678381377100} -{"stream":"website_overview","data":{"uuid":"14cca8fb-0ccb-42ff-beb1-3cb54b733fbd","property_id":"314186564","date":"20230130","totalUsers":3682,"newUsers":2000,"sessions":6608,"sessionsPerUser":2.1708278580814717,"averageSessionDuration":190.6988095730932,"screenPageViews":14538,"screenPageViewsPerSession":2.2000605326876514,"bounceRate":0.612590799031477},"emitted_at":1678381377101} -{"stream":"website_overview","data":{"uuid":"bcc011da-9dce-40ae-ac00-bb25b28c2747","property_id":"314186564","date":"20230112","totalUsers":3416,"newUsers":1892,"sessions":5598,"sessionsPerUser":2.011498383039885,"averageSessionDuration":188.77579687477672,"screenPageViews":11043,"screenPageViewsPerSession":1.972668810289389,"bounceRate":0.6379063951411218},"emitted_at":1678381377101} -{"stream":"website_overview","data":{"uuid":"bb4b1589-61be-43c7-8a73-d2255172d4b6","property_id":"314186564","date":"20230123","totalUsers":3308,"newUsers":1749,"sessions":5535,"sessionsPerUser":1.9967532467532467,"averageSessionDuration":188.03694558265582,"screenPageViews":10295,"screenPageViewsPerSession":1.8599819331526648,"bounceRate":0.5694670280036134},"emitted_at":1678381377102} -{"stream":"website_overview","data":{"uuid":"c909659f-3dbc-4a96-b3c8-499522dee675","property_id":"314186564","date":"20230118","totalUsers":3248,"newUsers":1658,"sessions":5376,"sessionsPerUser":2.0317460317460316,"averageSessionDuration":172.09874560900298,"screenPageViews":8572,"screenPageViewsPerSession":1.5944940476190477,"bounceRate":0.5926339285714286},"emitted_at":1678381377102} -{"stream":"website_overview","data":{"uuid":"01530e84-96f6-4d38-9475-6b95897b43de","property_id":"314186564","date":"20230111","totalUsers":3231,"newUsers":1894,"sessions":5518,"sessionsPerUser":2.06203288490284,"averageSessionDuration":149.535961576477,"screenPageViews":8722,"screenPageViewsPerSession":1.5806451612903225,"bounceRate":0.6652772743747735},"emitted_at":1678381377102} -{"stream":"website_overview","data":{"uuid":"4e1e4484-8b31-4a09-8bb3-babba35c6ed1","property_id":"314186564","date":"20230117","totalUsers":3107,"newUsers":1512,"sessions":5135,"sessionsPerUser":2.0385073441842,"averageSessionDuration":183.1596054231743,"screenPageViews":9669,"screenPageViewsPerSession":1.8829600778967868,"bounceRate":0.5888997078870497},"emitted_at":1678381377103} -{"stream":"website_overview","data":{"uuid":"8d7fea6d-3004-4319-a45c-2b1109670773","property_id":"314186564","date":"20230127","totalUsers":3098,"newUsers":1601,"sessions":4931,"sessionsPerUser":1.9739791833466773,"averageSessionDuration":178.9474292780369,"screenPageViews":9555,"screenPageViewsPerSession":1.9377408233624012,"bounceRate":0.619549787061448},"emitted_at":1678381377103} -{"stream":"website_overview","data":{"uuid":"e850847f-74cf-4bba-bc5f-16f3d1cdc1c9","property_id":"314186564","date":"20230124","totalUsers":3061,"newUsers":1509,"sessions":5339,"sessionsPerUser":2.1296370163542084,"averageSessionDuration":193.48503378460387,"screenPageViews":10235,"screenPageViewsPerSession":1.9170256602359992,"bounceRate":0.6147218580258476},"emitted_at":1678381377103} -{"stream":"website_overview","data":{"uuid":"51b80e4d-9e7f-4055-8497-c435a2617130","property_id":"314186564","date":"20230119","totalUsers":3035,"newUsers":1523,"sessions":5033,"sessionsPerUser":2.026983487716472,"averageSessionDuration":184.39271639558913,"screenPageViews":9458,"screenPageViewsPerSession":1.8791972978342937,"bounceRate":0.5845420226505067},"emitted_at":1678381377104} -{"stream":"website_overview","data":{"uuid":"fc93bcad-558d-454b-81eb-614d99e15b85","property_id":"314186564","date":"20230125","totalUsers":2840,"newUsers":1441,"sessions":4652,"sessionsPerUser":2.0008602150537635,"averageSessionDuration":204.45900655674978,"screenPageViews":9531,"screenPageViewsPerSession":2.0487962166809974,"bounceRate":0.5801805674978504},"emitted_at":1678381377104} -{"stream":"website_overview","data":{"uuid":"52aad0a3-2340-403b-99f7-a0e5a2fd8eb3","property_id":"314186564","date":"20230113","totalUsers":2786,"newUsers":1545,"sessions":4403,"sessionsPerUser":1.9210296684118673,"averageSessionDuration":193.9103609679764,"screenPageViews":8331,"screenPageViewsPerSession":1.8921190097660685,"bounceRate":0.6422893481717011},"emitted_at":1678381377104} -{"stream":"website_overview","data":{"uuid":"784a70e8-4325-44c9-8286-0bfe2d7ef8fb","property_id":"314186564","date":"20230110","totalUsers":2757,"newUsers":1419,"sessions":4681,"sessionsPerUser":2.134518923848609,"averageSessionDuration":128.47261591860715,"screenPageViews":5555,"screenPageViewsPerSession":1.1867122409741508,"bounceRate":0.6656697286904507},"emitted_at":1678381377104} -{"stream":"website_overview","data":{"uuid":"34659aa4-9983-4a68-9de5-63a1381ec607","property_id":"314186564","date":"20230109","totalUsers":2691,"newUsers":1390,"sessions":4564,"sessionsPerUser":2.115901715345387,"averageSessionDuration":132.07061591520596,"screenPageViews":5725,"screenPageViewsPerSession":1.2543821209465382,"bounceRate":0.6726555652936022},"emitted_at":1678381377105} -{"stream":"website_overview","data":{"uuid":"17ad08b5-4b51-40f3-be6f-838967a900b8","property_id":"314186564","date":"20230116","totalUsers":2594,"newUsers":1268,"sessions":4517,"sessionsPerUser":2.194849368318756,"averageSessionDuration":172.99511950099625,"screenPageViews":7693,"screenPageViewsPerSession":1.7031215408456941,"bounceRate":0.6232012397609032},"emitted_at":1678381377105} -{"stream":"website_overview","data":{"uuid":"5f09f109-a218-46de-a3e4-14c0719d3aaf","property_id":"314186564","date":"20230105","totalUsers":2377,"newUsers":1194,"sessions":3913,"sessionsPerUser":2.041210224308816,"averageSessionDuration":144.14393872629697,"screenPageViews":4813,"screenPageViewsPerSession":1.2300025555839509,"bounceRate":0.6580628673651929},"emitted_at":1678381377105} -{"stream":"website_overview","data":{"uuid":"e8917eaa-449d-49c7-9d13-6af381ba50a0","property_id":"314186564","date":"20230120","totalUsers":2344,"newUsers":1173,"sessions":3816,"sessionsPerUser":2.04392072844135,"averageSessionDuration":190.34353808307128,"screenPageViews":7625,"screenPageViewsPerSession":1.9981656184486374,"bounceRate":0.5880503144654088},"emitted_at":1678381377106} -{"stream":"website_overview","data":{"uuid":"fdd62ddb-a6a9-49c9-9f25-5f011a79a560","property_id":"314186564","date":"20230104","totalUsers":2239,"newUsers":1137,"sessions":3765,"sessionsPerUser":2.1139809096013478,"averageSessionDuration":139.47659503585655,"screenPageViews":4638,"screenPageViewsPerSession":1.2318725099601593,"bounceRate":0.6608233731739708},"emitted_at":1678381377106} -{"stream":"website_overview","data":{"uuid":"89654a98-195a-4402-b828-9c64086c60a3","property_id":"314186564","date":"20230302","totalUsers":2770,"newUsers":1386,"sessions":4008,"sessionsPerUser":1.660314830157415,"averageSessionDuration":271.822018881986,"screenPageViews":11290,"screenPageViewsPerSession":2.8168662674650697,"bounceRate":0.41092814371257486},"emitted_at":1678381379199} -{"stream":"website_overview","data":{"uuid":"5a39fa48-8a34-448e-8593-376d16d3ab92","property_id":"314186564","date":"20230303","totalUsers":2292,"newUsers":1161,"sessions":3200,"sessionsPerUser":1.634320735444331,"averageSessionDuration":244.685786118125,"screenPageViews":8864,"screenPageViewsPerSession":2.77,"bounceRate":0.43875},"emitted_at":1678381379199} -{"stream":"website_overview","data":{"uuid":"a3cd1fb4-d6cd-4cdf-a9a3-273455a939e2","property_id":"314186564","date":"20230305","totalUsers":1576,"newUsers":901,"sessions":2028,"sessionsPerUser":1.4933726067746687,"averageSessionDuration":218.57345723915188,"screenPageViews":4863,"screenPageViewsPerSession":2.3979289940828403,"bounceRate":0.4285009861932939},"emitted_at":1678381379201} -{"stream":"website_overview","data":{"uuid":"00d72b8b-24a8-4885-af3e-6e2edc617c74","property_id":"314186564","date":"20230304","totalUsers":1253,"newUsers":784,"sessions":1593,"sessionsPerUser":1.4286995515695067,"averageSessionDuration":234.63554106779657,"screenPageViews":3917,"screenPageViewsPerSession":2.4588826114249844,"bounceRate":0.455743879472693},"emitted_at":1678381379202} +{"stream": "daily_active_users", "data": {"uuid": "8958ad05-9217-4232-af3a-842b2ef3066a", "property_id": "314186564", "date": "20230406", "active1DayUsers": 2562}, "emitted_at": 1681405954033} +{"stream": "daily_active_users", "data": {"uuid": "2ededb64-296c-4cd3-8285-258f952e6d01", "property_id": "314186564", "date": "20230403", "active1DayUsers": 2521}, "emitted_at": 1681405954034} +{"stream": "daily_active_users", "data": {"uuid": "aee7c406-9668-4e7d-8f1e-e4b6e944781a", "property_id": "314186564", "date": "20230404", "active1DayUsers": 2386}, "emitted_at": 1681405954034} +{"stream": "daily_active_users", "data": {"uuid": "8fdcf306-c6ce-418d-a8b0-114c3e0853e3", "property_id": "314186564", "date": "20230405", "active1DayUsers": 2318}, "emitted_at": 1681405954035} +{"stream": "daily_active_users", "data": {"uuid": "ddae49fa-6a49-409c-a3d9-972043e1297e", "property_id": "314186564", "date": "20230411", "active1DayUsers": 2248}, "emitted_at": 1681405954035} +{"stream": "daily_active_users", "data": {"uuid": "d3c0fe8d-729b-49d5-ba09-836d11c72b36", "property_id": "314186564", "date": "20230412", "active1DayUsers": 2164}, "emitted_at": 1681405954036} +{"stream": "daily_active_users", "data": {"uuid": "3bed51b3-fe19-4cfe-aa7b-2f834444e4ac", "property_id": "314186564", "date": "20230410", "active1DayUsers": 2021}, "emitted_at": 1681405954036} +{"stream": "daily_active_users", "data": {"uuid": "930dc88c-2176-44d7-b89d-f7a0deed7cb6", "property_id": "314186564", "date": "20230407", "active1DayUsers": 1628}, "emitted_at": 1681405954037} +{"stream": "daily_active_users", "data": {"uuid": "862aee10-bc17-4fcb-9917-c03dcf930b7a", "property_id": "314186564", "date": "20230409", "active1DayUsers": 1009}, "emitted_at": 1681405954037} +{"stream": "daily_active_users", "data": {"uuid": "888e8a03-f908-49ea-bc24-47d3e0c71ce5", "property_id": "314186564", "date": "20230402", "active1DayUsers": 978}, "emitted_at": 1681405954038} +{"stream": "weekly_active_users", "data": {"uuid": "552f657c-894d-42a5-b136-621a27c83f20", "property_id": "314186564", "date": "20230403", "active7DayUsers": 11840}, "emitted_at": 1681405954684} +{"stream": "weekly_active_users", "data": {"uuid": "ab335ba9-16a4-47f7-9475-0cd0c71e13c5", "property_id": "314186564", "date": "20230406", "active7DayUsers": 11828}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "c2249443-a731-454f-a92d-dcabde1e053e", "property_id": "314186564", "date": "20230404", "active7DayUsers": 11812}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "9031b092-0365-45f6-a3fd-a42697fc60e5", "property_id": "314186564", "date": "20230405", "active7DayUsers": 11751}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "686ec0f2-245a-41ee-8b2f-28c6ff58cca3", "property_id": "314186564", "date": "20230408", "active7DayUsers": 11745}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "c230f0bb-e08d-410c-aaf7-92ea55c1eb3c", "property_id": "314186564", "date": "20230409", "active7DayUsers": 11739}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "360eeddb-8e7c-4cf8-ba68-fe0f74bdd4b2", "property_id": "314186564", "date": "20230407", "active7DayUsers": 11637}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "fa08f066-b0fe-4cce-9ff1-aa51533a36a2", "property_id": "314186564", "date": "20230401", "active7DayUsers": 11547}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "99849845-7511-46ee-bb0f-b99fcbe86094", "property_id": "314186564", "date": "20230402", "active7DayUsers": 11521}, "emitted_at": 1681405954685} +{"stream": "weekly_active_users", "data": {"uuid": "1537fbde-6a1e-4676-ad38-3952c6c49517", "property_id": "314186564", "date": "20230410", "active7DayUsers": 11369}, "emitted_at": 1681405954686} +{"stream": "four_weekly_active_users", "data": {"uuid": "3ea1880f-1e1b-42f8-858f-d66c49400592", "property_id": "314186564", "date": "20230401", "active28DayUsers": 48082}, "emitted_at": 1681405955854} +{"stream": "four_weekly_active_users", "data": {"uuid": "e3697089-6a56-466f-893c-57506cce44f4", "property_id": "314186564", "date": "20230402", "active28DayUsers": 47927}, "emitted_at": 1681405955854} +{"stream": "four_weekly_active_users", "data": {"uuid": "2a76a756-b625-4291-9012-09d6449b4460", "property_id": "314186564", "date": "20230403", "active28DayUsers": 44678}, "emitted_at": 1681405955854} +{"stream": "four_weekly_active_users", "data": {"uuid": "30f93662-7a47-4455-bb87-4e23753d7836", "property_id": "314186564", "date": "20230404", "active28DayUsers": 42997}, "emitted_at": 1681405955854} +{"stream": "four_weekly_active_users", "data": {"uuid": "bf5980dd-18bd-4dd3-b6f7-123a8d9bc7ba", "property_id": "314186564", "date": "20230405", "active28DayUsers": 42219}, "emitted_at": 1681405955855} +{"stream": "four_weekly_active_users", "data": {"uuid": "095af0ca-ca67-44a9-acaf-fbe1f04beb8f", "property_id": "314186564", "date": "20230406", "active28DayUsers": 42028}, "emitted_at": 1681405955855} +{"stream": "four_weekly_active_users", "data": {"uuid": "29958f7e-91a1-4377-a5e7-763ee1fc26f7", "property_id": "314186564", "date": "20230407", "active28DayUsers": 41851}, "emitted_at": 1681405955855} +{"stream": "four_weekly_active_users", "data": {"uuid": "b5cd639e-99a4-4fd9-871e-9883a509d35e", "property_id": "314186564", "date": "20230408", "active28DayUsers": 41775}, "emitted_at": 1681405955855} +{"stream": "four_weekly_active_users", "data": {"uuid": "b85e1864-aca2-45ae-8bc2-614da510ac29", "property_id": "314186564", "date": "20230409", "active28DayUsers": 41717}, "emitted_at": 1681405955855} +{"stream": "four_weekly_active_users", "data": {"uuid": "505deea8-b4d0-4d76-9c78-1faaa8e3c725", "property_id": "314186564", "date": "20230410", "active28DayUsers": 41212}, "emitted_at": 1681405955855} +{"stream": "devices", "data": {"uuid": "f43b1120-b565-4174-a974-251de4ddb3e7", "property_id": "314186564", "date": "20230411", "deviceCategory": "desktop", "operatingSystem": "Macintosh", "browser": "Chrome", "totalUsers": 973, "newUsers": 368, "sessions": 1667, "sessionsPerUser": 2.110126582278481, "averageSessionDuration": 308.8923676994601, "screenPageViews": 5367, "screenPageViewsPerSession": 3.2195560887822436, "bounceRate": 0.498500299940012}, "emitted_at": 1681405958296} +{"stream": "devices", "data": {"uuid": "11fa7956-54f4-42ae-bf50-ccd7f78acb43", "property_id": "314186564", "date": "20230412", "deviceCategory": "desktop", "operatingSystem": "Macintosh", "browser": "Chrome", "totalUsers": 969, "newUsers": 350, "sessions": 1588, "sessionsPerUser": 2.0025220680958387, "averageSessionDuration": 336.108126070529, "screenPageViews": 4726, "screenPageViewsPerSession": 2.9760705289672544, "bounceRate": 0.5012594458438288}, "emitted_at": 1681405958296} +{"stream": "devices", "data": {"uuid": "3a7a9be6-715f-407d-964d-36a335d1f89c", "property_id": "314186564", "date": "20230404", "deviceCategory": "desktop", "operatingSystem": "Macintosh", "browser": "Chrome", "totalUsers": 942, "newUsers": 352, "sessions": 1554, "sessionsPerUser": 2.007751937984496, "averageSessionDuration": 328.66656451029604, "screenPageViews": 5217, "screenPageViewsPerSession": 3.357142857142857, "bounceRate": 0.4954954954954955}, "emitted_at": 1681405958296} +{"stream": "devices", "data": {"uuid": "d174c54a-7091-4736-b921-c191bf5dd4b6", "property_id": "314186564", "date": "20230406", "deviceCategory": "desktop", "operatingSystem": "Macintosh", "browser": "Chrome", "totalUsers": 942, "newUsers": 389, "sessions": 1551, "sessionsPerUser": 1.9783163265306123, "averageSessionDuration": 357.5382107272727, "screenPageViews": 5102, "screenPageViewsPerSession": 3.289490651192779, "bounceRate": 0.49258542875564154}, "emitted_at": 1681405958297} +{"stream": "devices", "data": {"uuid": "889df6a1-f480-483e-8957-d4ca767028f8", "property_id": "314186564", "date": "20230403", "deviceCategory": "desktop", "operatingSystem": "Macintosh", "browser": "Chrome", "totalUsers": 929, "newUsers": 341, "sessions": 1546, "sessionsPerUser": 2.0558510638297873, "averageSessionDuration": 315.4776974385511, "screenPageViews": 5116, "screenPageViewsPerSession": 3.309184993531695, "bounceRate": 0.5071151358344114}, "emitted_at": 1681405958297} +{"stream": "devices", "data": {"uuid": "7a12fdb1-65bd-4f9d-9b28-f7d4bd9efc45", "property_id": "314186564", "date": "20230405", "deviceCategory": "desktop", "operatingSystem": "Macintosh", "browser": "Chrome", "totalUsers": 926, "newUsers": 363, "sessions": 1573, "sessionsPerUser": 2.0428571428571427, "averageSessionDuration": 346.09502719898285, "screenPageViews": 5032, "screenPageViewsPerSession": 3.1989828353464715, "bounceRate": 0.4869675778766688}, "emitted_at": 1681405958297} +{"stream": "devices", "data": {"uuid": "36283f3b-12f0-44bf-af7e-fa17790a536a", "property_id": "314186564", "date": "20230410", "deviceCategory": "desktop", "operatingSystem": "Macintosh", "browser": "Chrome", "totalUsers": 920, "newUsers": 374, "sessions": 1524, "sessionsPerUser": 2.0456375838926175, "averageSessionDuration": 255.77025801837266, "screenPageViews": 4025, "screenPageViewsPerSession": 2.641076115485564, "bounceRate": 0.5255905511811023}, "emitted_at": 1681405958297} +{"stream": "devices", "data": {"uuid": "9ed102f9-6670-4883-890a-86d647e3e08a", "property_id": "314186564", "date": "20230403", "deviceCategory": "desktop", "operatingSystem": "Windows", "browser": "Chrome", "totalUsers": 781, "newUsers": 366, "sessions": 1184, "sessionsPerUser": 1.8528951486697967, "averageSessionDuration": 278.84846059881755, "screenPageViews": 2993, "screenPageViewsPerSession": 2.5278716216216215, "bounceRate": 0.5616554054054054}, "emitted_at": 1681405958297} +{"stream": "devices", "data": {"uuid": "a4d1798d-40ec-4653-b3ec-2c4951fa7323", "property_id": "314186564", "date": "20230411", "deviceCategory": "desktop", "operatingSystem": "Windows", "browser": "Chrome", "totalUsers": 760, "newUsers": 365, "sessions": 1155, "sessionsPerUser": 1.896551724137931, "averageSessionDuration": 264.1307251896104, "screenPageViews": 2452, "screenPageViewsPerSession": 2.122943722943723, "bounceRate": 0.5316017316017316}, "emitted_at": 1681405958298} +{"stream": "devices", "data": {"uuid": "0f4cb5c7-703f-4e21-9efd-828da56eb03b", "property_id": "314186564", "date": "20230404", "deviceCategory": "desktop", "operatingSystem": "Windows", "browser": "Chrome", "totalUsers": 727, "newUsers": 345, "sessions": 1137, "sessionsPerUser": 1.8517915309446253, "averageSessionDuration": 252.06245670272648, "screenPageViews": 2601, "screenPageViewsPerSession": 2.287598944591029, "bounceRate": 0.5488126649076517}, "emitted_at": 1681405958298} +{"stream": "locations", "data": {"uuid": "5606f203-9304-4b42-82c8-af3d825cd34a", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230406", "totalUsers": 108, "newUsers": 62, "sessions": 157, "sessionsPerUser": 1.6354166666666667, "averageSessionDuration": 435.44268001273895, "screenPageViews": 534, "screenPageViewsPerSession": 3.4012738853503186, "bounceRate": 0.5031847133757962}, "emitted_at": 1681405962136} +{"stream": "locations", "data": {"uuid": "759886f0-3723-44bf-ba3f-1b994169ed85", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230405", "totalUsers": 95, "newUsers": 54, "sessions": 123, "sessionsPerUser": 1.5769230769230769, "averageSessionDuration": 499.2074986666667, "screenPageViews": 481, "screenPageViewsPerSession": 3.910569105691057, "bounceRate": 0.44715447154471544}, "emitted_at": 1681405962136} +{"stream": "locations", "data": {"uuid": "81c1cd25-8d43-48a9-836b-e10b1991466a", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230403", "totalUsers": 94, "newUsers": 46, "sessions": 126, "sessionsPerUser": 1.68, "averageSessionDuration": 424.00281903174607, "screenPageViews": 499, "screenPageViewsPerSession": 3.9603174603174605, "bounceRate": 0.5238095238095238}, "emitted_at": 1681405962136} +{"stream": "locations", "data": {"uuid": "1a833419-629e-4678-9fb2-f97f10da5d40", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230404", "totalUsers": 85, "newUsers": 47, "sessions": 121, "sessionsPerUser": 1.6575342465753424, "averageSessionDuration": 378.81275640495863, "screenPageViews": 434, "screenPageViewsPerSession": 3.5867768595041323, "bounceRate": 0.48760330578512395}, "emitted_at": 1681405962136} +{"stream": "locations", "data": {"uuid": "577fd852-67a2-43c3-8321-56fa00dac58c", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230412", "totalUsers": 85, "newUsers": 49, "sessions": 131, "sessionsPerUser": 1.8194444444444444, "averageSessionDuration": 379.1322029236641, "screenPageViews": 391, "screenPageViewsPerSession": 2.984732824427481, "bounceRate": 0.5267175572519084}, "emitted_at": 1681405962137} +{"stream": "locations", "data": {"uuid": "bb0f3fa2-dc9c-475d-a47c-ace82c720da2", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230410", "totalUsers": 81, "newUsers": 42, "sessions": 135, "sessionsPerUser": 1.9565217391304348, "averageSessionDuration": 303.13140742962963, "screenPageViews": 376, "screenPageViewsPerSession": 2.785185185185185, "bounceRate": 0.5407407407407407}, "emitted_at": 1681405962137} +{"stream": "locations", "data": {"uuid": "f7057f58-fbbd-4947-ae37-a7a29d6700ac", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230411", "totalUsers": 81, "newUsers": 38, "sessions": 123, "sessionsPerUser": 1.9523809523809523, "averageSessionDuration": 362.51537134146344, "screenPageViews": 312, "screenPageViewsPerSession": 2.5365853658536586, "bounceRate": 0.5934959349593496}, "emitted_at": 1681405962137} +{"stream": "locations", "data": {"uuid": "afb62a0d-5e5a-4f88-8367-3fe45a35d06f", "property_id": "314186564", "region": "Karnataka", "country": "India", "city": "Bengaluru", "date": "20230411", "totalUsers": 76, "newUsers": 52, "sessions": 123, "sessionsPerUser": 1.8636363636363635, "averageSessionDuration": 203.00314456910567, "screenPageViews": 261, "screenPageViewsPerSession": 2.1219512195121952, "bounceRate": 0.4959349593495935}, "emitted_at": 1681405962137} +{"stream": "locations", "data": {"uuid": "ce319e7f-8f8f-4c73-9f45-9a80a08bcf33", "property_id": "314186564", "region": "Karnataka", "country": "India", "city": "Bengaluru", "date": "20230403", "totalUsers": 69, "newUsers": 34, "sessions": 102, "sessionsPerUser": 1.728813559322034, "averageSessionDuration": 256.4942830490196, "screenPageViews": 216, "screenPageViewsPerSession": 2.1176470588235294, "bounceRate": 0.5490196078431373}, "emitted_at": 1681405962137} +{"stream": "locations", "data": {"uuid": "28fa18ea-3a0c-4c09-9ffc-b24d2d5abeaf", "property_id": "314186564", "region": "New York", "country": "United States", "city": "New York", "date": "20230407", "totalUsers": 69, "newUsers": 30, "sessions": 98, "sessionsPerUser": 1.849056603773585, "averageSessionDuration": 489.54009168367344, "screenPageViews": 376, "screenPageViewsPerSession": 3.836734693877551, "bounceRate": 0.4489795918367347}, "emitted_at": 1681405962137} +{"stream": "pages", "data": {"uuid": "1d042583-6008-4bb8-abad-a1d3a171c9c5", "property_id": "314186564", "date": "20230405", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 1190, "bounceRate": 0.5516393442622951}, "emitted_at": 1681405967183} +{"stream": "pages", "data": {"uuid": "e24096ca-ad32-49eb-824a-2a65e52b9a08", "property_id": "314186564", "date": "20230411", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 1151, "bounceRate": 0.5400641025641025}, "emitted_at": 1681405967184} +{"stream": "pages", "data": {"uuid": "8911f922-c707-4af1-95b5-18a81e31b5af", "property_id": "314186564", "date": "20230404", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 1137, "bounceRate": 0.5617232808616405}, "emitted_at": 1681405967184} +{"stream": "pages", "data": {"uuid": "315dad3c-81e5-432f-a47c-134e89a7cf42", "property_id": "314186564", "date": "20230410", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 1099, "bounceRate": 0.5416666666666666}, "emitted_at": 1681405967184} +{"stream": "pages", "data": {"uuid": "8ba00398-80cf-4a17-afba-2cf223244cfe", "property_id": "314186564", "date": "20230403", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 1092, "bounceRate": 0.5569070373588184}, "emitted_at": 1681405967184} +{"stream": "pages", "data": {"uuid": "0d62e64a-4da9-46b8-8e90-e1180ea9b1ab", "property_id": "314186564", "date": "20230412", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 1089, "bounceRate": 0.5690515806988353}, "emitted_at": 1681405967184} +{"stream": "pages", "data": {"uuid": "d5a7b5bf-b8a9-4f29-8a06-0e4bcfee17a7", "property_id": "314186564", "date": "20230406", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 1005, "bounceRate": 0.5516279069767441}, "emitted_at": 1681405967185} +{"stream": "pages", "data": {"uuid": "e77044bf-1cd6-4ef0-a475-ff6255ac1cf8", "property_id": "314186564", "date": "20230407", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 734, "bounceRate": 0.571619812583668}, "emitted_at": 1681405967185} +{"stream": "pages", "data": {"uuid": "2c0db575-cf8a-4cca-955d-baa2032bec54", "property_id": "314186564", "date": "20230403", "hostName": "airbyte.com", "pagePathPlusQueryString": "/blog/data-modeling-unsung-hero-data-engineering-introduction", "screenPageViews": 541, "bounceRate": 0.7192691029900332}, "emitted_at": 1681405967185} +{"stream": "pages", "data": {"uuid": "4d4ea3e6-91ac-4da7-baf6-4e8cd6665b8c", "property_id": "314186564", "date": "20230402", "hostName": "airbyte.com", "pagePathPlusQueryString": "/", "screenPageViews": 529, "bounceRate": 0.5614678899082569}, "emitted_at": 1681405967185} +{"stream": "website_overview", "data": {"uuid": "3175b7c6-8257-4111-b15a-5c97e16437fe", "property_id": "314186564", "date": "20230406", "totalUsers": 3014, "newUsers": 1539, "sessions": 4257, "sessionsPerUser": 1.661592505854801, "averageSessionDuration": 270.9253856281419, "screenPageViews": 10839, "screenPageViewsPerSession": 2.5461592670894997, "bounceRate": 0.5391120507399577}, "emitted_at": 1681405971634} +{"stream": "website_overview", "data": {"uuid": "c376b15d-d38e-4caf-816d-9dc2b8f04d8f", "property_id": "314186564", "date": "20230403", "totalUsers": 2988, "newUsers": 1461, "sessions": 4350, "sessionsPerUser": 1.725505751685839, "averageSessionDuration": 246.36103450390806, "screenPageViews": 10749, "screenPageViewsPerSession": 2.4710344827586206, "bounceRate": 0.5618390804597702}, "emitted_at": 1681405971634} +{"stream": "website_overview", "data": {"uuid": "28294b7a-85ad-4d73-bd11-20e5041c7de9", "property_id": "314186564", "date": "20230404", "totalUsers": 2817, "newUsers": 1367, "sessions": 4153, "sessionsPerUser": 1.7405699916177704, "averageSessionDuration": 259.69049313965803, "screenPageViews": 10653, "screenPageViewsPerSession": 2.5651336383337346, "bounceRate": 0.5379243920057789}, "emitted_at": 1681405971635} +{"stream": "website_overview", "data": {"uuid": "7cba1969-8d97-4f56-b1c2-07795408ec05", "property_id": "314186564", "date": "20230405", "totalUsers": 2754, "newUsers": 1333, "sessions": 4004, "sessionsPerUser": 1.727351164797239, "averageSessionDuration": 290.08648263536463, "screenPageViews": 10737, "screenPageViewsPerSession": 2.6815684315684316, "bounceRate": 0.5072427572427572}, "emitted_at": 1681405971635} +{"stream": "website_overview", "data": {"uuid": "19b5c257-3ff5-4f76-af0a-e8d54915fcf5", "property_id": "314186564", "date": "20230411", "totalUsers": 2730, "newUsers": 1273, "sessions": 4006, "sessionsPerUser": 1.7820284697508897, "averageSessionDuration": 256.8832527284074, "screenPageViews": 10073, "screenPageViewsPerSession": 2.514478282576136, "bounceRate": 0.5162256615077384}, "emitted_at": 1681405971635} +{"stream": "website_overview", "data": {"uuid": "14c67449-e3d5-4e59-af8e-8fc8dd3880db", "property_id": "314186564", "date": "20230412", "totalUsers": 2642, "newUsers": 1215, "sessions": 3940, "sessionsPerUser": 1.820702402957486, "averageSessionDuration": 281.3629124893401, "screenPageViews": 10621, "screenPageViewsPerSession": 2.6956852791878174, "bounceRate": 0.5309644670050762}, "emitted_at": 1681405971635} +{"stream": "website_overview", "data": {"uuid": "ffa23a73-b5b1-41f6-ae2e-b27a4b6e020e", "property_id": "314186564", "date": "20230410", "totalUsers": 2409, "newUsers": 1173, "sessions": 3602, "sessionsPerUser": 1.7822859970311726, "averageSessionDuration": 252.51497996779568, "screenPageViews": 8973, "screenPageViewsPerSession": 2.491116046640755, "bounceRate": 0.524153248195447}, "emitted_at": 1681405971635} +{"stream": "website_overview", "data": {"uuid": "e42b5011-0d04-4e34-8b40-03b463f8537c", "property_id": "314186564", "date": "20230407", "totalUsers": 1950, "newUsers": 974, "sessions": 2710, "sessionsPerUser": 1.6646191646191646, "averageSessionDuration": 261.6388968815498, "screenPageViews": 6972, "screenPageViewsPerSession": 2.572693726937269, "bounceRate": 0.5431734317343173}, "emitted_at": 1681405971635} +{"stream": "website_overview", "data": {"uuid": "93775261-4ea3-4fb4-babb-4110b6843fbb", "property_id": "314186564", "date": "20230409", "totalUsers": 1277, "newUsers": 664, "sessions": 1661, "sessionsPerUser": 1.6461843409316155, "averageSessionDuration": 199.5610062384106, "screenPageViews": 3300, "screenPageViewsPerSession": 1.9867549668874172, "bounceRate": 0.5605057194461168}, "emitted_at": 1681405971635} +{"stream": "website_overview", "data": {"uuid": "4df90187-80fa-433e-8c99-bfa28764c5a3", "property_id": "314186564", "date": "20230402", "totalUsers": 1185, "newUsers": 605, "sessions": 1505, "sessionsPerUser": 1.5388548057259714, "averageSessionDuration": 221.2044838358804, "screenPageViews": 3260, "screenPageViewsPerSession": 2.166112956810631, "bounceRate": 0.5348837209302325}, "emitted_at": 1681405971636} +{"stream": "cohort_report", "data": {"uuid": "f75938fd-3274-4807-8c37-ce7dd0c3a790", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0000", "cohortActiveUsers": 731}, "emitted_at": 1681405973101} +{"stream": "cohort_report", "data": {"uuid": "8f228a9c-57b8-4329-9de7-f5fb56ee18b6", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0001", "cohortActiveUsers": 25}, "emitted_at": 1681405973101} +{"stream": "cohort_report", "data": {"uuid": "f79f8d4d-4166-4fcd-9ca0-0704c3b9af13", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0002", "cohortActiveUsers": 9}, "emitted_at": 1681405973101} +{"stream": "cohort_report", "data": {"uuid": "d47f77ef-5e72-4c66-9360-cee92352deaf", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0003", "cohortActiveUsers": 6}, "emitted_at": 1681405973101} +{"stream": "cohort_report", "data": {"uuid": "d90efbfd-b320-45ea-9b51-672fa86d01bb", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0004", "cohortActiveUsers": 4}, "emitted_at": 1681405973101} +{"stream": "cohort_report", "data": {"uuid": "8b2ded37-ede8-4f27-932f-b6b357c363a8", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0009", "cohortActiveUsers": 4}, "emitted_at": 1681405973102} +{"stream": "cohort_report", "data": {"uuid": "6e8e19a2-a5cb-4a82-b800-23f38a0f5268", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0010", "cohortActiveUsers": 4}, "emitted_at": 1681405973102} +{"stream": "cohort_report", "data": {"uuid": "38fc20ce-d8f1-459c-b880-44851128a923", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0011", "cohortActiveUsers": 4}, "emitted_at": 1681405973102} +{"stream": "cohort_report", "data": {"uuid": "8a77d306-0c5d-431c-b2a7-6b2c87383719", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0013", "cohortActiveUsers": 4}, "emitted_at": 1681405973102} +{"stream": "cohort_report", "data": {"uuid": "105f7916-0d45-4e17-98db-c6ea3e7d5223", "property_id": "314186564", "cohort": "cohort_0", "cohortNthDay": "0025", "cohortActiveUsers": 4}, "emitted_at": 1681405973102} +{"stream": "pivot_report", "data": {"uuid": "a220f05f-5185-41b7-9730-379875cc8866", "property_id": "314186564", "browser": "Chrome", "country": "United States", "language": "English", "sessions": 10441}, "emitted_at": 1681405974686} +{"stream": "pivot_report", "data": {"uuid": "d01ac2b1-8947-4231-89f6-822fc7b08a01", "property_id": "314186564", "browser": "Chrome", "country": "India", "language": "English", "sessions": 4170}, "emitted_at": 1681405974686} +{"stream": "pivot_report", "data": {"uuid": "cd9027aa-8226-418c-9b60-9d6856327a93", "property_id": "314186564", "browser": "Safari", "country": "United States", "language": "English", "sessions": 1798}, "emitted_at": 1681405974686} +{"stream": "pivot_report", "data": {"uuid": "79a69e5c-0ceb-45e7-b789-5a4904ce273d", "property_id": "314186564", "browser": "Chrome", "country": "Canada", "language": "English", "sessions": 961}, "emitted_at": 1681405974686} +{"stream": "pivot_report", "data": {"uuid": "c9d18f96-3762-47e0-b322-72ad7953c645", "property_id": "314186564", "browser": "Chrome", "country": "United Kingdom", "language": "English", "sessions": 740}, "emitted_at": 1681405974686} +{"stream": "pivot_report", "data": {"uuid": "5688b831-a3be-4b5a-ae0b-f464b8098de4", "property_id": "314186564", "browser": "Chrome", "country": "Australia", "language": "English", "sessions": 621}, "emitted_at": 1681405974687} +{"stream": "pivot_report", "data": {"uuid": "fac29ad5-6fcb-42ef-ac2f-31b782c391cd", "property_id": "314186564", "browser": "Chrome", "country": "Brazil", "language": "Portuguese", "sessions": 566}, "emitted_at": 1681405974687} +{"stream": "pivot_report", "data": {"uuid": "a4e75b7f-034f-4511-8491-70c801950e93", "property_id": "314186564", "browser": "Chrome", "country": "Vietnam", "language": "English", "sessions": 565}, "emitted_at": 1681405974687} +{"stream": "pivot_report", "data": {"uuid": "ad237798-ae12-46bd-892d-0d8b28acca8e", "property_id": "314186564", "browser": "Edge", "country": "United States", "language": "English", "sessions": 555}, "emitted_at": 1681405974687} +{"stream": "pivot_report", "data": {"uuid": "8a06cd72-4789-4f36-bf5b-f2c860e1aece", "property_id": "314186564", "browser": "Chrome", "country": "Pakistan", "language": "English", "sessions": 522}, "emitted_at": 1681405974687} \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/incremental_catalog.json b/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/incremental_catalog.json new file mode 100644 index 00000000000..0900aa6dbfe --- /dev/null +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/integration_tests/incremental_catalog.json @@ -0,0 +1,100 @@ +{ + "streams": [ + { + "stream": { + "name": "daily_active_users", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "weekly_active_users", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "four_weekly_active_users", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "devices", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "locations", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "pages", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "traffic_sources", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "website_overview", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["date"], + "source_defined_primary_key": [["uuid"]] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + } + ] +} diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/defaults/custom_reports_schema.json b/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/defaults/custom_reports_schema.json index 01753bf4bcd..777a8403baf 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/defaults/custom_reports_schema.json +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/defaults/custom_reports_schema.json @@ -20,6 +20,118 @@ "items": { "type": "string" } + }, + "cohortSpec": { + "type": ["null", "object"], + "properties": { + "cohorts": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "name": { + "type": ["null", "string"] + }, + "dimension": { + "type": "string", + "enum": ["firstSessionDate"] + }, + "dateRange": { + "type": "object", + "properties": { + "startDate": { + "type": ["null", "string"] + }, + "endDate": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + } + } + } + } + } + }, + "cohortsRange": { + "type": "object", + "required": ["granularity", "endOffset"], + "properties": { + "granularity": { + "type": "string", + "enum": ["DAILY", "WEEKLY", "MONTHLY"] + }, + "startOffset": { + "type": ["null", "integer"] + }, + "endOffset": { + "type": "integer" + } + } + }, + "cohortReportSettings": { + "type": ["null", "object"], + "properties": { + "accumulate": { + "type": ["null", "boolean"] + } + } + } + } + }, + "pivots": { + "type": ["null", "array"], + "items": { + "type": "object", + "required": ["limit"], + "properties": { + "fieldNames": { + "type": ["null", "array"], + "items": { + "type": "string" + } + }, + "orderBys": { + "type": ["null", "array"], + "items": { + "type": "object", + "properties": { + "desc": { + "type": ["null", "boolean"] + }, + "pivot": { + "type": "object", + "properties": { + "metricName": { + "type": "string" + }, + "pivotSelections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "dimensionName": { + "type": "string" + }, + "dimensionValue": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "offset": {"type": ["null", "string", "integer"]}, + "limit": {"type": ["string", "integer"]}, + "metricAggregations": { + "type": ["null", "string"], + "enum": ["COUNT", "TOTAL", "MAXIMUM", "MINIMUM"] + } + } + } } } } diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/source.py b/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/source.py index f027683b150..7dc228b370e 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/source.py +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/source.py @@ -87,13 +87,12 @@ class GoogleAnalyticsDataApiBaseStream(GoogleAnalyticsDataApiAbstractStream): _record_date_format = "%Y%m%d" primary_key = "uuid" - cursor_field = None metadata = MetadataDescriptor() - def __init__(self, *args, config: Mapping[str, Any], **kwargs): - self.cursor_field = "date" if "date" in config.get("dimensions") else [] - super().__init__(*args, config=config, **kwargs) + @property + def cursor_field(self) -> Optional[str]: + return "date" if "date" in self.config.get("dimensions", {}) else [] @staticmethod def add_primary_key() -> dict: @@ -233,6 +232,46 @@ class GoogleAnalyticsDataApiBaseStream(GoogleAnalyticsDataApiAbstractStream): start_date += datetime.timedelta(days=self.config["window_in_days"]) +class PivotReport(GoogleAnalyticsDataApiBaseStream): + def request_body_json( + self, + stream_state: Mapping[str, Any], + stream_slice: Mapping[str, Any] = None, + next_page_token: Mapping[str, Any] = None, + ) -> Optional[Mapping]: + payload = super().request_body_json(stream_state, stream_slice, next_page_token) + payload["pivots"] = self.config["pivots"] + return payload + + def path( + self, *, stream_state: Mapping[str, Any] = None, stream_slice: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None + ) -> str: + return f"properties/{self.config['property_id']}:runPivotReport" + + +class CohortReportMixin: + cursor_field = [] + + def stream_slices( + self, *, sync_mode: SyncMode, cursor_field: List[str] = None, stream_state: Mapping[str, Any] = None + ) -> Iterable[Optional[Mapping[str, Any]]]: + yield from [None] + + def request_body_json( + self, + stream_state: Mapping[str, Any], + stream_slice: Mapping[str, Any] = None, + next_page_token: Mapping[str, Any] = None, + ) -> Optional[Mapping]: + # https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec#Cohort.FIELDS.date_range + # In a cohort request, this dateRange is required and the dateRanges in the RunReportRequest or RunPivotReportRequest + # must be unspecified. + payload = super().request_body_json(stream_state, stream_slice, next_page_token) + payload.pop("dateRanges") + payload["cohortSpec"] = self.config["cohort_spec"] + return payload + + class GoogleAnalyticsDataApiMetadataStream(GoogleAnalyticsDataApiAbstractStream): """ https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/getMetadata @@ -339,6 +378,14 @@ class SourceGoogleAnalyticsDataApi(AbstractSource): @staticmethod def instantiate_report_class(report: dict, config: Mapping[str, Any]) -> GoogleAnalyticsDataApiBaseStream: - return type(report["name"], (GoogleAnalyticsDataApiBaseStream,), {})( - config=dict(**config, metrics=report["metrics"], dimensions=report["dimensions"]), authenticator=config["authenticator"] - ) + cohort_spec = report.get("cohortSpec") + pivots = report.get("pivots") + stream_config = {"metrics": report["metrics"], "dimensions": report["dimensions"], **config} + report_class_tuple = (GoogleAnalyticsDataApiBaseStream,) + if pivots: + stream_config["pivots"] = pivots + report_class_tuple = (PivotReport,) + if cohort_spec: + stream_config["cohort_spec"] = cohort_spec + report_class_tuple = (CohortReportMixin, *report_class_tuple) + return type(report["name"], report_class_tuple, {})(config=stream_config, authenticator=config["authenticator"]) diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/spec.json b/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/spec.json index fcb974c82f8..a249a2c2392 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/spec.json +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/source_google_analytics_data_api/spec.json @@ -85,7 +85,7 @@ "date_ranges_start_date": { "type": "string", "title": "Start Date", - "description": "The start date from which to replicate report data in the format YYYY-MM-DD. Data generated before this date will not be included in the report.", + "description": "The start date from which to replicate report data in the format YYYY-MM-DD. Data generated before this date will not be included in the report. Not applied to custom Cohort reports.", "format": "date", "order": 2 }, @@ -98,7 +98,7 @@ "window_in_days": { "type": "integer", "title": "Data request time increment in days", - "description": "The time increment used by the connector when requesting data from the Google Analytics API. More information is available in the the docs. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364.", + "description": "The time increment used by the connector when requesting data from the Google Analytics API. More information is available in the the docs. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364. Not applied to custom Cohort reports.", "examples": [30, 60, 90, 120, 200, 364], "minimum": 1, "maximum": 364, diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/unit_tests/test_source.py b/airbyte-integrations/connectors/source-google-analytics-data-api/unit_tests/test_source.py index 2068e5bfb0e..8a101f77eef 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/unit_tests/test_source.py +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/unit_tests/test_source.py @@ -65,8 +65,8 @@ def config_gen(config): def test_check(requests_mock, config_gen): requests_mock.register_uri("POST", "https://oauth2.googleapis.com/token", json={"access_token": "access_token", "expires_in": 3600, "token_type": "Bearer"}) requests_mock.register_uri("GET", "https://analyticsdata.googleapis.com/v1beta/properties/108176369/metadata", json={ - "dimensions": [{"apiName": "date"}, {"apiName": "country"}], - "metrics": [{"apiName": "totalUsers"}, {"apiName": "screenPageViews"}], + "dimensions": [{"apiName": "date"}, {"apiName": "country"}, {"apiName": "language"}, {"apiName": "browser"}], + "metrics": [{"apiName": "totalUsers"}, {"apiName": "screenPageViews"}, {"apiName": "sessions"}], }) requests_mock.register_uri("POST", "https://analyticsdata.googleapis.com/v1beta/properties/108176369:runReport", json={"dimensionHeaders": [{"name": "date"}, {"name": "country"}], @@ -89,6 +89,8 @@ def test_check(requests_mock, config_gen): assert source.check(logger, config_gen(custom_reports='[{"name": "daily_active_users", "dimensions": ["date"], "metrics": ["totalUsers"]}]')) == AirbyteConnectionStatus(status=Status.FAILED, message="'custom_reports: daily_active_users already exist as a default report(s).'") assert source.check(logger, config_gen(custom_reports='[{"name": "name", "dimensions": ["unknown"], "metrics": ["totalUsers"]}]')) == AirbyteConnectionStatus(status=Status.FAILED, message="'custom_reports: invalid dimension(s): unknown for the custom report: name'") assert source.check(logger, config_gen(custom_reports='[{"name": "name", "dimensions": ["date"], "metrics": ["unknown"]}]')) == AirbyteConnectionStatus(status=Status.FAILED, message="'custom_reports: invalid metric(s): unknown for the custom report: name'") + assert source.check(logger, config_gen(custom_reports='[{"name": "cohort_report", "dimensions": ["cohort", "cohortNthDay"], "metrics": ["cohortActiveUsers"], "cohortSpec": {"cohorts": [{"dimension": "firstSessionDate", "dateRange": {"startDate": "2023-01-01", "endDate": "2023-01-01"}}], "cohortsRange": {"endOffset": 100}}}]')) == AirbyteConnectionStatus(status=Status.FAILED, message='"custom_reports.0.cohortSpec.cohortsRange: \'granularity\' is a required property"') + assert source.check(logger, config_gen(custom_reports='[{"name": "pivot_report", "dateRanges": [{ "startDate": "2020-09-01", "endDate": "2020-09-15" }], "dimensions": ["browser", "country", "language"], "metrics": ["sessions"], "pivots": {}}]')) == AirbyteConnectionStatus(status=Status.FAILED, message='"custom_reports.0.pivots: {} is not of type \'null\', \'array\'"') assert source.check(logger, config_gen(credentials={"auth_type": "Service", "credentials_json": "invalid"})) == AirbyteConnectionStatus(status=Status.FAILED, message="'credentials.credentials_json is not valid JSON'") assert source.check(logger, config_gen(date_ranges_start_date="2022-20-20")) == AirbyteConnectionStatus(status=Status.FAILED, message='"time data \'2022-20-20\' does not match format \'%Y-%m-%d\'"') diff --git a/connectors.md b/connectors.md index 7d4b6ce2623..d110825e58a 100644 --- a/connectors.md +++ b/connectors.md @@ -94,7 +94,7 @@ | **Gong** | Gong icon | Source | airbyte/source-gong:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/gong) | [connectors/source/gong](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/gong) | [source-gong](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-gong) | `32382e40-3b49-4b99-9c5c-4076501914e7` | | **Google Ads** | Google Ads icon | Source | airbyte/source-google-ads:0.2.14 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/google-ads) | [connectors/source/google-ads](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-ads) | [source-google-ads](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-ads) | `253487c0-2246-43ba-a21f-5116b20a2c50` | | **Google Analytics (Universal Analytics)** | Google Analytics (Universal Analytics) icon | Source | airbyte/source-google-analytics-v4:0.1.34 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/google-analytics-v4) | [connectors/source/google-analytics-v4](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-analytics-v4) | [source-google-analytics-v4](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-analytics-v4) | `eff3616a-f9c3-11eb-9a03-0242ac130003` | -| **Google Analytics 4 (GA4)** | Google Analytics 4 (GA4) icon | Source | airbyte/source-google-analytics-data-api:0.1.3 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/google-analytics-data-api) | [connectors/source/google-analytics-data-api](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-analytics-data-api) | [source-google-analytics-data-api](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-analytics-data-api) | `3cc2eafd-84aa-4dca-93af-322d9dfeec1a` | +| **Google Analytics 4 (GA4)** | Google Analytics 4 (GA4) icon | Source | airbyte/source-google-analytics-data-api:0.2.0 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/google-analytics-data-api) | [connectors/source/google-analytics-data-api](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-analytics-data-api) | [source-google-analytics-data-api](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-analytics-data-api) | `3cc2eafd-84aa-4dca-93af-322d9dfeec1a` | | **Google Directory** | Google Directory icon | Source | airbyte/source-google-directory:0.1.9 | alpha | [docs](https://docs.airbyte.com/integrations/sources/google-directory) | [connectors/source/google-directory](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-directory) | [source-google-directory](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-directory) | `d19ae824-e289-4b14-995a-0632eb46d246` | | **Google PageSpeed Insights** | Google PageSpeed Insights icon | Source | airbyte/source-google-pagespeed-insights:0.1.0 | alpha | [docs](https://docs.airbyte.com/integrations/sources/google-pagespeed-insights) | [connectors/source/google-pagespeed-insights](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-pagespeed-insights) | [source-google-pagespeed-insights](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-pagespeed-insights) | `1e9086ab-ddac-4c1d-aafd-ba43ff575fe4` | | **Google Search Console** | Google Search Console icon | Source | airbyte/source-google-search-console:0.1.22 | generally_available | [docs](https://docs.airbyte.com/integrations/sources/google-search-console) | [connectors/source/google-search-console](https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/google-search-console) | [source-google-search-console](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-google-search-console) | `eb4c9e00-db83-4d63-a386-39cfa91012a8` | diff --git a/docs/integrations/sources/google-analytics-data-api.md b/docs/integrations/sources/google-analytics-data-api.md index 9c935ccf847..434d0f71899 100644 --- a/docs/integrations/sources/google-analytics-data-api.md +++ b/docs/integrations/sources/google-analytics-data-api.md @@ -38,9 +38,9 @@ Use the service account email address to [add a user](https://support.google.com 4. Click `Authenticate your account` by selecting Oauth or Service Account for Authentication. 5. Log in and Authorize the Google Analytics account. 6. Enter the [**Property ID**](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id#what_is_my_property_id) whose events are tracked. -7. Enter the **Start Date** from which to replicate report data in the format YYYY-MM-DD. +7. Enter the **Start Date** from which to replicate report data in the format YYYY-MM-DD. (Not applied to custom Cohort reports). 8. Enter the **Custom Reports (Optional)** a JSON array describing the custom reports you want to sync from Google Analytics. -9. Enter the **Data request time increment in days (Optional)**. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364. +9. Enter the **Data request time increment in days (Optional)**. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364. (Not applied to custom Cohort reports). **For Airbyte Open Source:** @@ -49,9 +49,9 @@ Use the service account email address to [add a user](https://support.google.com 3. On the source setup page, select **Google Analytics 4 (GA4)** from the Source type dropdown and enter a name for this connector. 4. Select Service Account for Authentication in dropdown list and enter **Service Account JSON Key** from Step 1. 5. Enter the [**Property ID**](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id#what_is_my_property_id) whose events are tracked. -6. Enter the **Start Date** from which to replicate report data in the format YYYY-MM-DD. +6. Enter the **Start Date** from which to replicate report data in the format YYYY-MM-DD. (Not applied to custom Cohort reports). 7. Enter the **Custom Reports (Optional)** a JSON array describing the custom reports you want to sync from Google Analytics. -8. Enter the **Data request time increment in days (Optional)**. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364. +8. Enter the **Data request time increment in days (Optional)**. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. The minimum allowed value for this field is 1, and the maximum is 364. (Not applied to custom Cohort reports). ## Supported sync modes @@ -80,12 +80,11 @@ This connector outputs the following incremental streams: ## Connector-specific features -* Connector supports multiple custom reports with user provided [Dimensions and metrics](https://ga-dev-tools.web.app/dimensions-metrics-explorer/) - :::note - * Custom reports should be provided in format `[{"name": "", "dimensions": ["", ...], "metrics": ["", ...]}]` - * To enable Incremental sync for Custom reports, you need to include the `date` dimension. + * Custom reports should be provided in format `[{"name": "", "dimensions": ["", ...], "metrics": ["", ...], "cohortSpec": "", "pivots": ""}]` + * Both `pivots` and `cohortSpec` are optional. Detailed description of the `cohortSpec` and the `pivots` objects you can find [here](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec) and [here](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/Pivot). + * To enable Incremental sync for Custom reports, you need to include the `date` dimension (except for custom Cohort reports). ::: ## Performance Considerations @@ -103,12 +102,13 @@ This connector outputs the following incremental streams: ## Changelog -| Version | Date | Pull Request | Subject | -|:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------| -| 0.1.3 | 2023-03-10 | [23872](https://github.com/airbytehq/airbyte/pull/23872) | Fix parse + cursor for custom reports | -| 0.1.2 | 2023-03-07 | [23822](https://github.com/airbytehq/airbyte/pull/23822) | Improve `rate limits` customer faced error messages and retry logic for `429` | -| 0.1.1 | 2023-01-10 | [21169](https://github.com/airbytehq/airbyte/pull/21169) | Slicer updated, unit tests added | -| 0.1.0 | 2023-01-08 | [20889](https://github.com/airbytehq/airbyte/pull/20889) | Improved config validation, SAT | -| 0.0.3 | 2022-08-15 | [15229](https://github.com/airbytehq/airbyte/pull/15229) | Source Google Analytics Data Api: code refactoring | -| 0.0.2 | 2022-07-27 | [15087](https://github.com/airbytehq/airbyte/pull/15087) | fix documentationUrl | -| 0.0.1 | 2022-05-09 | [12701](https://github.com/airbytehq/airbyte/pull/12701) | Introduce Google Analytics Data API source | +| Version | Date | Pull Request | Subject | +|:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------| +| 0.2.0 | 2023-04-13 | [25179](https://github.com/airbytehq/airbyte/pull/25179) | Implement support for custom Cohort and Pivot reports | +| 0.1.3 | 2023-03-10 | [23872](https://github.com/airbytehq/airbyte/pull/23872) | Fix parse + cursor for custom reports | +| 0.1.2 | 2023-03-07 | [23822](https://github.com/airbytehq/airbyte/pull/23822) | Improve `rate limits` customer faced error messages and retry logic for `429` | +| 0.1.1 | 2023-01-10 | [21169](https://github.com/airbytehq/airbyte/pull/21169) | Slicer updated, unit tests added | +| 0.1.0 | 2023-01-08 | [20889](https://github.com/airbytehq/airbyte/pull/20889) | Improved config validation, SAT | +| 0.0.3 | 2022-08-15 | [15229](https://github.com/airbytehq/airbyte/pull/15229) | Source Google Analytics Data Api: code refactoring | +| 0.0.2 | 2022-07-27 | [15087](https://github.com/airbytehq/airbyte/pull/15087) | fix documentationUrl | +| 0.0.1 | 2022-05-09 | [12701](https://github.com/airbytehq/airbyte/pull/12701) | Introduce Google Analytics Data API source |