Я верю, что это сделает то, что вам нужно. Вы можете собирать типы данных / желаемые типы фильтров по-разному. Это просто проходит по таблице данных по умолчанию в Spotfire.
from Spotfire.Dxp.Application.Filters import ListBoxFilter, RangeFilter, FilterTypeIdentifiers
# first collect all of the data types in the table
filterTypes = {}
for col in Document.Data.Tables.DefaultTableReference.Columns:
#if the column is not numeric or datatype, assume is text
if col.DataType.IsNumeric or col.DataType.IsTime:
filterTypes[col.Name] = "range"
else:
filterTypes[col.Name] = "list"
#now change all of the filter types based on the data types
for scheme in Document.FilteringSchemes:
for filter in scheme.DefaultFilterCollection:
type = filterTypes[filter.Name]
if type == "list":
filter.TypeId = FilterTypeIdentifiers.ListBoxFilter
filter.As[ListBoxFilter]()
else:
filter.TypeId = FilterTypeIdentifiers.RangeFilter
filter.As[RangeFilter]()