GA query issue

Hi everybody,

I saw that recently 'add a GA database' section has been somewhat revamped - previously, no matter what, even after accepting the credentials, the token would eventually expire, without an option for the metabase to accept the renewal.
However, after the JSON credentials got implemented, it started to work.

Now I am struggling with different issues;

  1. Metabase is unable sync schema(' This database doesn't have any tables.' ) - I remember it used to work in the past.

  2. Every raw JSON query that I make results in a closure lang exception. I am using this builder https://ga-dev-tools.web.app/ga4/query-explorer/ and this is the trace:

    Mar 27 12:24:08 sycorax metabase[806255]: 2022-03-27 12:24:08,058 ERROR middleware.catch-exceptions :: Error processing query: null
    Mar 27 12:24:08 sycorax metabase[806255]: {:database_id 8,
    Mar 27 12:24:08 sycorax metabase[806255]: :started_at #t "2022-03-27T12:24:07.812244+02:00[Europe/Warsaw]",
    Mar 27 12:24:08 sycorax metabase[806255]: :json_query
    Mar 27 12:24:08 sycorax metabase[806255]: {:type "native",
    Mar 27 12:24:08 sycorax metabase[806255]: :native
    Mar 27 12:24:08 sycorax metabase[806255]: {:query
    Mar 27 12:24:08 sycorax metabase[806255]: "{"metrics":[{"name":"active7DayUsers"}],"dateRanges":[{"startDate":"30daysAgo","endDate":"yesterday"}]}",
    Mar 27 12:24:08 sycorax metabase[806255]: :template-tags {}},
    Mar 27 12:24:08 sycorax metabase[806255]: :database 8,
    Mar 27 12:24:08 sycorax metabase[806255]: :parameters ,
    Mar 27 12:24:08 sycorax metabase[806255]: :middleware {:js-int-to-string? true, :add-default-userland-constraints? true}},
    Mar 27 12:24:08 sycorax metabase[806255]: :status :failed,
    Mar 27 12:24:08 sycorax metabase[806255]: :class java.lang.ClassCastException,
    Mar 27 12:24:08 sycorax metabase[806255]: :stacktrace
    Mar 27 12:24:08 sycorax metabase[806255]: ["clojure.string$blank_QMARK_.invokeStatic(string.clj:293)"
    Mar 27 12:24:08 sycorax metabase[806255]: "clojure.string$blank_QMARK_.invoke(string.clj:287)"
    Mar 27 12:24:08 sycorax metabase[806255]: "--> driver.googleanalytics$mbql_query__GT_request.invokeStatic(googleanalytics.clj:117)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver.googleanalytics$mbql_query__GT_request.invoke(googleanalytics.clj:112)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver.googleanalytics$execute_STAR_.invokeStatic(googleanalytics.clj:153)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver.googleanalytics$execute_STAR_.invoke(googleanalytics.clj:151)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver.googleanalytics.execute$execute_reducible_query.invokeStatic(execute.clj:126)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver.googleanalytics.execute$execute_reducible_query.invoke(execute.clj:123)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver.googleanalytics$fn__86385.invokeStatic(googleanalytics.clj:157)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver.googleanalytics$fn__86385.invoke(googleanalytics.clj:155)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.context$executef.invokeStatic(context.clj:59)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.context$executef.invoke(context.clj:48)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.context.default$default_runf.invokeStatic(default.clj:68)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.context.default$default_runf.invoke(default.clj:66)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.context$runf.invokeStatic(context.clj:45)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.context$runf.invoke(context.clj:39)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.reducible$pivot.invokeStatic(reducible.clj:34)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.reducible$pivot.invoke(reducible.clj:31)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.mbql_to_native$mbql__GT_native$fn__49655.invoke(mbql_to_native.clj:25)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.check_features$check_features$fn__50401.invoke(check_features.clj:42)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.limit$limit$fn__47991.invoke(limit.clj:37)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.cache$maybe_return_cached_results$fn__50784.invoke(cache.clj:204)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.optimize_temporal_filters$optimize_temporal_filters$fn__51848.invoke(optimize_temporal_filters.clj:204)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.validate_temporal_bucketing$validate_temporal_bucketing$fn__51892.invoke(validate_temporal_bucketing.clj:50)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.auto_parse_filter_values$auto_parse_filter_values$fn__49712.invoke(auto_parse_filter_values.clj:43)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.wrap_value_literals$wrap_value_literals$fn__39780.invoke(wrap_value_literals.clj:161)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.annotate$add_column_info$fn__44546.invoke(annotate.clj:659)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.permissions$check_query_permissions$fn__46288.invoke(permissions.clj:108)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.pre_alias_aggregations$pre_alias_aggregations$fn__51006.invoke(pre_alias_aggregations.clj:40)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.cumulative_aggregations$handle_cumulative_aggregations$fn__46684.invoke(cumulative_aggregations.clj:60)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.visualization_settings$update_viz_settings$fn__46622.invoke(visualization_settings.clj:63)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.escape_join_aliases$escape_join_aliases_middleware$fn__48032.invoke(escape_join_aliases.clj:64)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.fix_bad_references$fix_bad_references_middleware$fn__50971.invoke(fix_bad_references.clj:91)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.resolve_joined_fields$resolve_joined_fields$fn__47569.invoke(resolve_joined_fields.clj:111)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.resolve_joins$resolve_joins$fn__51618.invoke(resolve_joins.clj:178)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.add_implicit_joins$add_implicit_joins$fn__51160.invoke(add_implicit_joins.clj:246)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.large_int_id$convert_id_to_string$fn__47588.invoke(large_int_id.clj:59)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.format_rows$format_rows$fn__51212.invoke(format_rows.clj:74)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.add_default_temporal_unit$add_default_temporal_unit$fn__46956.invoke(add_default_temporal_unit.clj:23)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.desugar$desugar$fn__46595.invoke(desugar.clj:21)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.binning$update_binning_strategy$fn__39509.invoke(binning.clj:232)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.resolve_fields$resolve_fields$fn__45930.invoke(resolve_fields.clj:34)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.add_dimension_projections$add_remapping$fn__50338.invoke(add_dimension_projections.clj:487)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.add_implicit_clauses$add_implicit_clauses$fn__50632.invoke(add_implicit_clauses.clj:164)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.upgrade_field_literals$upgrade_field_literals$fn__47976.invoke(upgrade_field_literals.clj:117)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.add_source_metadata$add_source_metadata_for_source_queries$fn__47333.invoke(add_source_metadata.clj:125)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.reconcile_breakout_and_order_by_bucketing$reconcile_breakout_and_order_by_bucketing$fn__50883.invoke(reconcile_breakout_and_order_by_bucketing.clj:100)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.auto_bucket_datetimes$auto_bucket_datetimes$fn__48970.invoke(auto_bucket_datetimes.clj:147)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.resolve_source_table$resolve_source_tables$fn__45911.invoke(resolve_source_table.clj:45)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.parameters$substitute_parameters$fn__48624.invoke(parameters.clj:109)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__45984.invoke(resolve_referenced.clj:79)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.expand_macros$expand_macros$fn__52276.invoke(expand_macros.clj:184)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.add_timezone_info$add_timezone_info$fn__48404.invoke(add_timezone_info.clj:15)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__51227.invoke(splice_params_in_response.clj:32)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__50643$fn__50648.invoke(resolve_database_and_driver.clj:35)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver$do_with_driver.invokeStatic(driver.clj:60)"
    Mar 27 12:24:08 sycorax metabase[806255]: "driver$do_with_driver.invoke(driver.clj:56)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__50643.invoke(resolve_database_and_driver.clj:34)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__46530.invoke(fetch_source_query.clj:286)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.store$initialize_store$fn__46721$fn__46722.invoke(store.clj:11)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.store$do_with_store.invokeStatic(store.clj:44)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.store$do_with_store.invoke(store.clj:38)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.store$initialize_store$fn__46721.invoke(store.clj:10)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.validate$validate_query$fn__50978.invoke(validate.clj:10)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.normalize_query$normalize$fn__50985.invoke(normalize_query.clj:22)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__48350.invoke(add_rows_truncated.clj:35)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__49641.invoke(results_metadata.clj:82)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.constraints$add_default_userland_constraints$fn__48368.invoke(constraints.clj:42)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.process_userland_query$process_userland_query$fn__50919.invoke(process_userland_query.clj:146)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.middleware.catch_exceptions$catch_exceptions$fn__51307.invoke(catch_exceptions.clj:169)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.reducible$async_qp$qp_STAR___43282$thunk__43283.invoke(reducible.clj:103)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.reducible$async_qp$qp_STAR___43282.invoke(reducible.clj:109)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.reducible$sync_qp$qp_STAR___43291$fn__43294.invoke(reducible.clj:135)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.reducible$sync_qp$qp_STAR___43291.invoke(reducible.clj:134)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor$process_userland_query.invokeStatic(query_processor.clj:247)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor$process_userland_query.doInvoke(query_processor.clj:243)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor$fn__52324$process_query_and_save_execution_BANG___52333$fn__52336.invoke(query_processor.clj:258)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor$fn__52324$process_query_and_save_execution_BANG___52333.invoke(query_processor.clj:251)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor$fn__52368$process_query_and_save_with_max_results_constraints_BANG___52377$fn__52380.invoke(query_processor.clj:270)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor$fn__52368$process_query_and_save_with_max_results_constraints_BANG___52377.invoke(query_processor.clj:263)"
    Mar 27 12:24:08 sycorax metabase[806255]: "api.dataset$run_query_async$fn__65303.invoke(dataset.clj:69)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.streaming$streaming_response_STAR_$fn__38418$fn__38419.invoke(streaming.clj:162)"
    Mar 27 12:24:08 sycorax metabase[806255]: "query_processor.streaming$streaming_response_STAR_$fn__38418.invoke(streaming.clj:161)"
    Mar 27 12:24:08 sycorax metabase[806255]: "async.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:65)"
    Mar 27 12:24:08 sycorax metabase[806255]: "async.streaming_response$do_f_STAR_.invoke(streaming_response.clj:63)"
    Mar 27 12:24:08 sycorax metabase[806255]: "async.streaming_response$do_f_async$task__26888.invoke(streaming_response.clj:84)"],
    Mar 27 12:24:08 sycorax metabase[806255]: :card_id nil,
    Mar 27 12:24:08 sycorax metabase[806255]: :context :ad-hoc,
    Mar 27 12:24:08 sycorax metabase[806255]: :error
    Mar 27 12:24:08 sycorax metabase[806255]: "class clojure.lang.PersistentVector cannot be cast to class java.lang.CharSequence (clojure.lang.PersistentVector is in unnamed module of loader 'app'; java.lang.CharSequence is in module java.base of loader 'bootstrap')",
    Mar 27 12:24:08 sycorax metabase[806255]: :row_count 0,
    Mar 27 12:24:08 sycorax metabase[806255]: :running_time 0,
    Mar 27 12:24:08 sycorax metabase[806255]: :data {:rows , :cols }}

Diagnostic info:
tiny FYI: the 'platform' part in browser info section is incorrect - it's a Mac Pro with apple silicion processor(not Intel as indicated in the snippet)
{
"browser-info": {
"language": "en-US",
"platform": "MacIntel",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36",
"vendor": "Google Inc."
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "11.0.14+9-Ubuntu-0ubuntu2.20.04",
"java.vendor": "Ubuntu",
"java.vendor.url": "https://ubuntu.com/",
"java.version": "11.0.14",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "11.0.14+9-Ubuntu-0ubuntu2.20.04",
"os.name": "Linux",
"os.version": "5.11.0-1027-oracle",
"user.language": "en",
"user.timezone": "Europe/Warsaw"
},
"metabase-info": {
"databases": [
"mysql",
"googleanalytics"
],
"hosting-env": "unknown",
"application-database": "mysql",
"application-database-details": {
"database": {
"name": "MySQL",
"version": "8.0.28-0ubuntu0.20.04.3"
},
"jdbc-driver": {
"name": "MariaDB Connector/J",
"version": "2.7.5"
}
},
"run-mode": "prod",
"version": {
"date": "2022-03-23",
"tag": "v0.42.3",
"branch": "release-x.42.x",
"hash": "33fb268"
},
"settings": {
"report-timezone": null
}
}
}

Hi @Piotrek44
Sync can take different amount of time depending on the database:
https://www.metabase.com/docs/latest/troubleshooting-guide/sync-fingerprint-scan.html

Metabase currently only supports GA3:
https://github.com/metabase/metabase/issues/12905 - upvote by clicking :+1: on the first post
Your query should look something like this:

{
  "ids": "ga:123456789",
  "start-date": "30daysAgo",
  "end-date": "yesterday",
  "metrics": "ga:7dayUsers",
  "dimensions": "ga:date",
  "sort": "ga:date",
  "include-empty-rows": false
}

And about the platform. That information comes from your browser, so it is what is returned by Chrome.