2016-08-16 4 views
2

Может кто-нибудь, пожалуйста, предоставил скрипт железа python для создания нескольких фильтров box select select (с опцией поиска). Когда я нажимаю кнопку, в которой мой сценарий внедряется, данные должны быть отфильтрованы для всех моих четырех таблиц данных, представленных на моей странице на панели мониторинга.Утюг скрипта python для создания фильтров в spotfire

Я написал некоторый скрипт, но он работает, если присутствует только одна таблица данных. Перед попыткой применить фильтр для данных в нескольких таблицах данных я столкнулся с некоторой ошибкой.

from Spotfire.Dxp.Applica‌​tion 
import Filters as filters 

CurPanel = Document.ActivePageR‌​eference.FilterPanel 
FilterA = CurPanel.TableGroups‌​[0].GetFilter("column‌​name") 
CheckBoxes = FilterA.FilterRefere‌​nce.As[filters.CheckB‌​oxFilter]() 
strCityL = Document.Properties[‌​"propertyname"] 
    for CheckBoxVal in CheckBoxes.Values: 
     CheckBoxes.Uncheck(C‌​heckBoxVal) 
    for strVal in strCityL: 
     CheckBoxes.Check(st‌​rVal) 

Выше сценарий для одной таблицы данных, и я не могу найти мой фильтр значений

Благодаря

+0

Пожалуйста, предоставьте скрипт, который вы имеете до сих пор :) – scsimon

+0

от Spotfire.Dxp.Application импортных фильтров в качестве фильтров CurPanel = Document.ActivePageReference.FilterPanel FilterA = CurPanel.TableGroups [0] .GetFilter ("ColumnName") CheckBoxes = FilterA.FilterReference.As [filters.CheckBoxFilter]() strCityL = Document.Properties [ "PropertyName"] для CheckBoxVal в CheckBoxes.Values: CheckBoxes.Uncheck (CheckBoxVal) для strVal в strCityL: \t CheckBoxes.Check (strVal) Выше сценария для одной таблицы данных, и я не могу выполнить поиск значений фильтра. –

+0

Я не великий человек, я бы сказал, что Хосе и некоторые другие. Вот хорошая ссылка. http://spotfired.blogspot.com/2014/03/change-filters-programatically-from.html Вот его профиль http://stackoverflow.com/users/922290/jleviaguirre @jleviaguirre – scsimon

ответ

3

следующий код должен получить вас там. Я документировал так, что вы можете иметь какой-то контекст для каждой строки и, надеюсь, воспроизвести это для любого другого фильтра, который вам нужен. на самом деле, я думаю, единственный другой фильтр, который действительно очень отличается от этого RangeFilter, но это еще один пост где-то :)

""" 
update the specified ListBox filter selection based on a parameter 

Parameters to be created: 
table -- the string name of the data table that will be filtered 
column -- the string name of the column to filter 
      IMPORTANT: set this filter type to ListBox using the Filters panel 
values -- a CSV string of the values to be selected 
""" 

# get the data table reference 
dt = Document.Data.Tables[table] 
# format our values into a list 
vals = values.split(',') 

# for debugging; safe to remove 
print("values:") 
print(vals) 

# import the necessary Spotfire classes 
from Spotfire.Dxp.Application.Filters import ListBoxFilter, FilterPanel 

# using the default Filtering Scheme and the supplied Data Table name, get the filter by its Column name 
filter = Document.FilteringSchemes.DefaultFilteringSchemeReference[dt][column] 
# cast it as a ListBox filter 
lb = filter.As[ListBoxFilter]() 

# reset the filter to its default state 
lb.Reset() 
# set the values according to the script parameter 
lb.SetSelection(vals) 
# OPTIONAL: select (true) or deselect (false) the "(All)" option 
lb.IncludeAllValues = False 
# OPTIONAL: select (true) or deselect (false) the "(Empty values)" option 
lb.IncludeEmpty = False 

# for debugging: safe to remove 
print("filter selection:") 
print(filter) 

пока есть на самом деле только один способ установить фильтр, существует целый ряд о способах получения ссылки на фильтр. этот код (строка № 23), насколько я понял, является самым простым и легким для чтения кода для выбора фильтров. ваш пробег может варьироваться в зависимости от вашего анализа и требований.

+1

Желание я мог бы пригласить дважды для документации! – scsimon

Смежные вопросы