우리는 두 개의 대시 보드가 포함 된 통합 문서, 첫 번째는 하나 개의 워크 시트를 포함하고 두 번째는 네 개의 워크 시트가 포함되어 있습니다.설정 타블로 필터
URL을 통해 필터를 전달하려고합니다. (해당 부분은 정상이지만) 두 번째 대시 보드의 모든 워크 시트를 업데이트 할 수 없습니다.
코드는 대시 보드를 반복하고 차례로 활성화 한 다음 각각에 대해 filterActiveSheet() 메서드를 호출합니다.
이 메서드는 각 워크 시트를 순서대로 반복하고 제공된 필드 이름과 일치하는 범주 필터를 검색하고 발견되면 applyFilterAsync() 메서드를 사용하여 제공된 필드 이름으로 바꿉니다.
var options = {
<snip>
onFirstInteractive: function() {
workbook = viz.getWorkbook();
sheets = workbook.getPublishedSheetsInfo();
for(s = 0; s < sheets.length; s++)
{
viz.getWorkbook().activateSheetAsync(s)
.then(filterActiveSheet);
}
}
};
function filterActiveSheet(sheet) {
for (ws = 0; ws < sheet.getWorksheets().length; ws++) {
var worksheet = sheet.getWorksheets()[ws];
worksheet.getFiltersAsync()
.then(function(p) {
var f = filters.split(';');
for(y=0;y<f.length;y++){
var filter = f[y].split(':');
var filterType = $.grep(p, function(e){ return e.getFieldName() == filter[0]; });
if (filterType.length > 0) {
switch(filterType[0].getFilterType()) {
case tableau.FilterType.CATEGORICAL:
return worksheet.applyFilterAsync(filter[0], filter[1], tableau.FilterUpdateType.REPLACE);
break;
<snip>
}
}
}
});
}
}
var viz = new tableauSoftware.Viz(placeholderDiv, url, options);
문제는 각 대시 보드에서 하나의 워크 시트 만 업데이트된다는 것입니다. 내가 applyFilterAsync() 호출 오류가 발생하지 않는 것 배의 예상 수를 볼 수 있습니다 크롬에서 JS를 통해 스테핑, 단순히 각 대시 보드에서 모든 필터/워크 시트를 업데이트 할 단지를하지 않는 것 .
생각하십니까? 제안? 구문 오류?
내 첫 번째 생각은 통합 문서를 변경하고 필터를 모든 데이터 원본을 사용하여 적용하는 것입니다. 그렇다면 자바 스크립트로 반복 할 필요가 없습니다. http://onlinehelp.tableau.com/current/pro/desktop/en-us/filtering_global.html을 참조하십시오. –
제안 해 주셔서 감사합니다. 다양한 시트에 여러 개의 서로 다른 데이터 소스가 불행하게도 그게은 총 고통과 사물을 지나치게 복잡하게, 그들이 현재하고있는 일입니다 만. 이것은이 다중 워크 시트 대시 보드를 처리하는 훨씬 더 큰 메커니즘의 작은 부분 일 뿐이라고 덧붙여 야합니다. – Mike
버전 10의 새로운 필터 기능을 사용하면 모든 데이터 소스를 포괄 할 수 있습니까? 필자는 "관련 데이터 소스를 사용하여 모두에게 적용"이라는 필터 기능이라고 생각합니다. –