cube-js/cube · error · Error

FILTER_PARAMS arg not found for ${filter.measure || filter.d

Error message

FILTER_PARAMS arg not found for ${filter.measure || filter.dimension}

What it means

FILTER_PARAMS.<member>.filter() matches the query's filter args against the filters defined in the data model to find the corresponding argument object. When no matching FILTER_PARAMS arg exists for the given measure/dimension (the filter isn't expressed via FILTER_PARAMS, or the member name doesn't match), a plain Error is thrown from filterParamArgument.

Source

Thrown at packages/cubejs-schema-compiler/src/adapter/BaseQuery.js:5392

        .map(f => BaseQuery.renderFilterParams(f, filterParamArgs, allocateParam, newGroupFilter, aliases))
        .map(v => ({ filterToWhere: () => v }));

      return newGroupFilter({ operator: filter.operator, values }).filterToWhere();
    }

    const filterParams = filter.filterParams();
    const filterParamArg = filterParamArgs.filter(p => {
      const member = p.__member();
      return member === filter.measure ||
        member === filter.dimension ||
        (aliases[member] && (
          aliases[member] === filter.measure ||
          aliases[member] === filter.dimension
        ));
    })[0];

    if (!filterParamArg) {
      throw new Error(`FILTER_PARAMS arg not found for ${filter.measure || filter.dimension}`);
    }

    if (typeof filterParamArg.__column() !== 'function') {
      return filter.conditionSql(filterParamArg.__column());
    }

    if (!filterParams || !filterParams.length) {
      return BaseFilter.ALWAYS_TRUE;
    }

    // eslint-disable-next-line prefer-spread
    return filterParamArg.__column().apply(
      null,
      filterParams.map(allocateParam),
    );
  }

  filterGroupFunction() {

View on GitHub (pinned to 7d981676b3)

Solutions

  1. Verify the member path in FILTER_PARAMS.<cube>.<member> exactly matches a filter defined for that member in the model
  2. Ensure the filter() calls are actually defined: FILTER_PARAMS.foo.bar.filter('bar') inside the member's sql/filters
  3. Check that the query filter being resolved belongs to the member whose FILTER_PARAMS is being evaluated

Example fix

// before (no filter defined for orders.status in model)
measure: { sql: `FILTER_PARAMS.orders.status.filter('x')` }
// after
cube(`orders`, {
  measures: { count: { sql: `FILTER_PARAMS.orders.status.filter(${orders.status})`, type: 'number' } },
  dimensions: { status: { sql: `status`, type: 'string' } }
})
Defensive patterns

Strategy: try-catch

Validate before calling

const defined = new Set(Object.keys(cube.filters || {}).concat(Object.keys(cube.dimensions || {}), Object.keys(cube.measures || {})));
const m = 'orders.status';
if (!defined.has(m.split('.').pop())) console.warn(`FILTER_PARAMS member may not exist: ${m}`);

Type guard

const isFilterParamArg = (f) => f && typeof f.__member === 'function' && typeof f.__column === 'function';

Try / catch

try { await cubeApi.query(q); } catch (e) { if (/FILTER_PARAMS arg not found/.test(e.message)) console.error('Check FILTER_PARAMS member path and filter() definitions:', e.message); throw e; }

Prevention

When it happens

Trigger: Calling FILTER_PARAMS with a member name that has no filter() args registered in the model; using FILTER_PARAMS inside a measure whose filters don't reference that member; typo in the cube/member path inside FILTER_PARAMS.

Common situations: Renaming a cube or member but not the FILTER_PARAMS reference; applying FILTER_PARAMS to a member with no filterable condition; generating filter SQL for a query filter that doesn't correspond to any model filter param.

Related errors


AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02). Data as JSON: /api/errors/c8e06a04cce8ccbc. Report an issue: GitHub.