[Type 2] Support range filter operators (GreaterThan, LessThan, Between) in PDFRequestOptions.vf() for view filters

未关闭
#1,752 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
45/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
冷清
技术栈
python
领域
api

调研方向

Start by reading the PDFRequestOptions.vf() entry point and the existing RequestOptions.filter.add() implementation. Determine how operators and range values should be represented for PDF view filters, then verify the expected behavior for GreaterThan, LessThan, and Between against the described continuous-filter use case.

由索引模型根据 Issue 内容生成。

描述

enhancement Server-Side Enhancement ui-exists

Summary

Add support for range filter operators (GreaterThan, LessThan, Between) in PDF view filters using .vf() method

Request Type

Type 2: add a REST API and support it in tsc.

This is functionality that exists in Tableau dashboards (continuous range filters) but cannot be properly controlled through the PDF generation API.

Description

Current Limitation

When using PDFRequestOptions.vf() to apply view filters for PDF generation, there is no way to specify filter operators such as GreaterThan, LessThan, or Between. The current implementation only supports:

  • Single discrete values: pdf_opts.vf('Region', 'West')
  • Multiple discrete values (IN operator): pdf_opts.vf('Category', 'Furniture,Technology')
  • Ambiguous comma-separated syntax: pdf_opts.vf('Score', '10,50')
Problem

For continuous range filters configured in Tableau dashboards, the comma-separated syntax '10,50' is ambiguous and may be interpreted as:

  • IN (10, 50) - only values exactly 10 or 50
  • BETWEEN 10 AND 50 - range from 10 to 50

Currently, there is no way to explicitly specify that a filter should use BETWEEN, GreaterThan, or other range operators, even though these filters work perfectly when using the dashboard interactively.

Proposed Solution

Add operator support to .vf() similar to how RequestOptions.filter.add() works for API queries:

Current API (RequestOptions filtering):

req_option = TSC.RequestOptions()
req_option.filter.add(TSC.Filter(
    TSC.RequestOptions.Field.Score,
    TSC.RequestOptions.Operator.GreaterThanOrEqual,
    '10'
))

Proposed enhancement for PDF view filters:

pdf_opts = TSC.PDFRequestOptions()
pdf_opts.vf('SCORE', '10', operator=TSC.RequestOptions.Operator.GreaterThanOrEqual)
# OR
pdf_opts.vf('SCORE', min_value='10', max_value='50')  # For BETWEEN
Use Case & Value
  • Frequency: This is needed any time programmatic PDF generation requires filtering on continuous numeric or date fields
  • Current workaround: None - users must either accept ambiguous behavior or modify dashboard filters, which affects all users
  • Work saved: Eliminates need to create separate dashboards with hardcoded filters just for PDF generation
  • Business impact: Critical for automated reporting where PDFs need to show data for specific ranges (e.g., "Show only high-risk scores 80-100", "Show sales data > $1M")
Example Scenario

A Tableau dashboard has a continuous slider filter for SCORE (range: 0-100). When generating automated weekly PDFs:

  • Needed: Filter to show only scores BETWEEN 10 AND 50
  • Current behavior: Passing [10, 50] may show only exact values 10 and 50
  • Expected behavior: Should show all values in the range 10-50, just like moving the slider in the web UI

This feature would bring view filter capabilities in line with the existing RequestOptions.filter API and match the functionality available in the Tableau web interface.

主要语言
Python
星标
716
派生
446
平均合并
8 天 8 小时
30 天内合并 PR
2

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

tableau/server-client-python 的其他 Issue

查看 tableau/server-client-python 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。