You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Metabase原生查询添加Date Range过滤器提示“No valid fields”问题排查

解决Metabase原生查询无法添加Date Range全局过滤器的问题

当你用Druid作为数据源的原生查询在Metabase里无法被全局Date Range过滤器识别时,核心问题是Metabase没办法自动检测原生查询里的时间字段关联关系,得手动配置变量和字段映射才行。下面是具体的解决步骤:

1. 修改原生查询,用Metabase日期变量替换硬编码的时间区间

把你原生查询里硬写死的intervals部分,换成Metabase的日期变量,同时明确关联Druid的时间维度(一般是__time字段,这是Druid默认的时间戳字段)。修改后的查询示例如下:

{ 
  "intervals": ["{{start_date}}/{{end_date}}"], 
  "granularity": { 
    "type": "period", 
    "period": "P1D", 
    "timeZone": "UTC" 
  }, 
  "context": { "timeout": 60000 }, 
  "queryType": "timeseries", 
  "dataSource": "DotmailerCampaign", 
  "aggregations": [{ 
    "type": "javascript", 
    "name": "sum", 
    "fieldNames": ["numOpens"], 
    "fnReset": "function() { return 0 ; }", 
    "fnAggregate": "function(current, x) { return current + (parseFloat(x) || 0); }", 
    "fnCombine": "function(x, y) { return x + y; }" 
  }], 
  "descending": false 
}

2. 配置Metabase变量的类型和关联字段

在Metabase的原生查询编辑界面,点击{{start_date}}和{{end_date}}这些变量的编辑按钮,做以下配置:

  • 把变量类型设为Date(或者Date Range,看你需要的过滤方式)
  • 在“Field to filter”选项里,选择Druid数据源对应的时间字段(通常是__time,如果你的Druid数据源自定义了时间字段,就选对应的那个)

这么设置后,Metabase就能识别到这个变量是关联时间字段的,全局Date Range过滤器就能和它联动了。

3. 验证仪表盘的全局过滤器设置

把修改后的原生查询问题添加到仪表盘后,要确认全局Date Range过滤器的“Filter targets”选项里,已经选中了这个问题的时间变量。如果没自动选中,手动勾选对应的关联项就行。

为什么UI转原生查询也会出问题?

当你把UI构造的问题转成原生查询时,Metabase不会自动保留时间字段的关联标记——UI模式下Metabase内部会追踪时间字段,但转成原生查询后,这些元数据关联就丢失了,所以同样得手动添加变量和配置关联。

内容的提问来源于stack exchange,提问作者Bo.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:43:19