{"record":{"id":"c8e06a04cce8ccbc","repo":"cube-js/cube","slug":"filter-params-arg-not-found-for-filter-measure","errorCode":null,"errorMessage":"FILTER_PARAMS arg not found for ${filter.measure || filter.dimension}","messagePattern":"FILTER_PARAMS arg not found for (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/cubejs-schema-compiler/src/adapter/BaseQuery.js","lineNumber":5392,"sourceCode":"        .map(f => BaseQuery.renderFilterParams(f, filterParamArgs, allocateParam, newGroupFilter, aliases))\n        .map(v => ({ filterToWhere: () => v }));\n\n      return newGroupFilter({ operator: filter.operator, values }).filterToWhere();\n    }\n\n    const filterParams = filter.filterParams();\n    const filterParamArg = filterParamArgs.filter(p => {\n      const member = p.__member();\n      return member === filter.measure ||\n        member === filter.dimension ||\n        (aliases[member] && (\n          aliases[member] === filter.measure ||\n          aliases[member] === filter.dimension\n        ));\n    })[0];\n\n    if (!filterParamArg) {\n      throw new Error(`FILTER_PARAMS arg not found for ${filter.measure || filter.dimension}`);\n    }\n\n    if (typeof filterParamArg.__column() !== 'function') {\n      return filter.conditionSql(filterParamArg.__column());\n    }\n\n    if (!filterParams || !filterParams.length) {\n      return BaseFilter.ALWAYS_TRUE;\n    }\n\n    // eslint-disable-next-line prefer-spread\n    return filterParamArg.__column().apply(\n      null,\n      filterParams.map(allocateParam),\n    );\n  }\n\n  filterGroupFunction() {","sourceCodeStart":5374,"sourceCodeEnd":5410,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js#L5374-L5410","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Verify the member path in FILTER_PARAMS.<cube>.<member> exactly matches a filter defined for that member in the model","Ensure the filter() calls are actually defined: FILTER_PARAMS.foo.bar.filter('bar') inside the member's sql/filters","Check that the query filter being resolved belongs to the member whose FILTER_PARAMS is being evaluated"],"exampleFix":"// before (no filter defined for orders.status in model)\nmeasure: { sql: `FILTER_PARAMS.orders.status.filter('x')` }\n// after\ncube(`orders`, {\n  measures: { count: { sql: `FILTER_PARAMS.orders.status.filter(${orders.status})`, type: 'number' } },\n  dimensions: { status: { sql: `status`, type: 'string' } }\n})","handlingStrategy":"try-catch","validationCode":"const defined = new Set(Object.keys(cube.filters || {}).concat(Object.keys(cube.dimensions || {}), Object.keys(cube.measures || {})));\nconst m = 'orders.status';\nif (!defined.has(m.split('.').pop())) console.warn(`FILTER_PARAMS member may not exist: ${m}`);","typeGuard":"const isFilterParamArg = (f) => f && typeof f.__member === 'function' && typeof f.__column === 'function';","tryCatchPattern":"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; }","preventionTips":["Always define member filters via FILTER_PARAMS.<cube>.<member>.filter('...') in the model","Keep FILTER_PARAMS member paths in sync when renaming cubes/members","Only use FILTER_PARAMS on members that actually have filter conditions"],"tags":["filter-params","schema-compiler"],"backgroundTag":"filter-params-arg-not-found","analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}