apache/superset · error · Error

Please choose at least one groupby

Error message

Please choose at least one groupby

What it means

The generic Exception handler in update_recipients: any failure that is not NotificationParamException or SlackChannelListingClientError (e.g. DB flush errors, unexpected AttributeError, network stack failure) is logged with full traceback and re-raised as UpdateFailedError with the same 'Failed to update slack recipients to v2: {ex}' message. Because the exception fires before recipient mutation, no recipients are left half-converted.

Source

Thrown at superset-frontend/plugins/plugin-chart-partition/src/transformData.ts:369

    })),
  }));
}

/**
 * Ports the legacy PartitionViz.get_data dispatch across the
 * time-series options.
 */
export default function transformData(
  records: Row[],
  options: Options,
): PartitionNode[] {
  const {
    groupbyLabels,
    metricLabels,
    timeSeriesOption = 'not_time',
  } = options;
  if (groupbyLabels.length === 0) {
    throw new Error('Please choose at least one groupby');
  }
  if (records.length === 0) {
    return []; // the legacy endpoint returned no data for an empty frame
  }
  if (timeSeriesOption === 'not_time' || timeSeriesOption === 'agg_sum') {
    return nestAggregates(records, groupbyLabels, metricLabels, 'sum');
  }
  if (timeSeriesOption === 'agg_mean') {
    return nestAggregates(records, groupbyLabels, metricLabels, 'mean');
  }
  if (
    timeSeriesOption === 'point_diff' ||
    timeSeriesOption === 'point_factor' ||
    timeSeriesOption === 'point_percent'
  ) {
    return nestPointComparison(
      records,
      groupbyLabels,

View on GitHub (pinned to f4587218dd)

Solutions

  1. Pull the full traceback from worker logs (logger.exception wrote it) to find the failing line.
  2. Address the root cause: DB session health, library versions, or the malformed row identified in the trace.
  3. Retry execution — update_recipients is idempotent up to that point (state snapshot _upgraded_recipient_state is only set on success).
Defensive patterns

Strategy: retry

Try / catch

try:
    command.run()
except UpdateFailedError as ex:
    capture_exception(ex.__cause__)  # real traceback via logger.exception
    retry_with_backoff()  # safe: recipients are only mutated on success

Prevention

When it happens

Trigger: Exceptions during pending-list building or resolution outside the guarded classes — json.dumps failure on resolved configs, session errors, NoneType bugs on malformed related objects, or Slack HTTP client raising an unexpected error type during channel ID resolution.

Common situations: Metadata DB connectivity blips during execution; version skew between superset and the Slack client library; corrupted related ReportRecipients rows causing attribute errors.

Related errors


AI-assisted analysis of apache/superset@f4587218dd (2026-08-14). Data as JSON: /api/errors/9b03ab4566025832. Report an issue: GitHub.