getredash/redash · error · Exception

Results format not supported

Error message

Results format not supported

What it means

Google Analytics v3 query runner's parse_ga_response converts each cell value based on its column type. It handles strings, numbers, and mcf: conversionPathValue steps; any other non-scalar structure falls into the else branch and raises 'Results format not supported'.

Source

Thrown at redash/query_runner/google_analytics.py:71

    rows = []
    for r in response.get("rows", []):
        d = {}
        for c, value in enumerate(r):
            column_name = response["columnHeaders"][c]["name"]
            column_type = [col for col in columns if col["name"] == column_name][0]["type"]

            # mcf results come a bit different than ga results:
            if isinstance(value, dict):
                if "primitiveValue" in value:
                    value = value["primitiveValue"]
                elif "conversionPathValue" in value:
                    steps = []
                    for step in value["conversionPathValue"]:
                        steps.append("{}:{}".format(step["interactionType"], step["nodeValue"]))
                    value = ", ".join(steps)
                else:
                    raise Exception("Results format not supported")

            if column_type == TYPE_DATE:
                value = datetime.strptime(value, "%Y%m%d")
            elif column_type == TYPE_DATETIME:
                if len(value) == 10:
                    value = datetime.strptime(value, "%Y%m%d%H")
                elif len(value) == 12:
                    value = datetime.strptime(value, "%Y%m%d%H%M")
                else:
                    raise Exception("Unknown date/time format in results: '{}'".format(value))

            d[column_name] = value
        rows.append(d)

    return {"columns": columns, "rows": rows}


class GoogleAnalytics(BaseSQLQueryRunner):

View on GitHub (pinned to ca79fe988d)

Solutions

  1. Remove the mcf: metric/dimension producing structured values and re-run
  2. Restructure the query to use only ga: scalar metrics/dimensions
  3. Handle the response client-side via the json_ds runner hitting the GA API directly
Defensive patterns

Strategy: validation

Validate before calling

def is_supported_ga_value(v) -> bool:
    return v is None or isinstance(v, (str, int, float)) or (isinstance(v, dict) and "conversionPathValue" in v)

Try / catch

try:
    result = parse_ga_response(columns, rows)
except Exception as e:
    if "Results format not supported" in str(e):
        drop_structured_metrics_and_retry()

Prevention

When it happens

Trigger: Selecting mcf: (Multi-Channel Funnels) metrics/dimensions whose values are dicts of a shape other than conversionPathValue, or any GA response cell that arrives as a list/dict the runner does not recognize.

Common situations: Mixing mcf: and ga: fields, using newly added GA dimensions that return structured values, querying the MCF reporting API with unsupported metrics.

Related errors


AI-assisted analysis of getredash/redash@ca79fe988d (2026-08-28). Data as JSON: /api/errors/8fc3f87d114ba07b. Report an issue: GitHub.