2017-09-15 5 views
0

그래서 저는 HTML의 JS를 사용하여 Tableau에서 동적 매개 변수를 수행 할 수 있다고 생각합니다.Tableau의 동적 매개 변수

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
<script src="http://public.tableau.com/javascripts/api/tableau-2.0.0.min.js"></script> 
<script> 
$(function() { 
    var url = 'points to dashboard url'; 
    var vizOptions = { 
     showTabs   : true, 
     hideToolbar  : true, 
     width    : "420px", 
     height    : "420px" 
    }; 

    currentViz = new tableauSoftware.Viz(document.getElementById('viz'), url, vizOptions); 
currentViz.addEventListener(tableauSoftware.TableauEventName.FILTER_CHANGE, onFilterChange); 
}); 


function onFilterChange(e) 
{ 
if (e.getFieldName() == 'Department') { 
    e.getFilterAsync().then(function(filter) { 
     var values = filter.getAppliedValues(); 
     var value = values[0]['value']; 

     // Value of the parameter if "All" is selected in the filter. 
     if (values.length > 1) { 
      value = 'All'; 
     } 

     currentViz.getWorkbook().changeParameterValueAsync('Parameter1', value); 
    }); 
} 
} 

내가 https://www.interworks.com/blog/daustin/2015/12/17/dynamic-parameters-tableau에서 가지고와이 코드는 꽤 플러그를 보이는 재생 : 여기 내 코드입니다. 그러나 내 매개 변수 결과는 변경되지 않습니다. 가능한 원인은 튜토리얼과 달리 매개 변수가 실제로 정수 및 목록이라는 것입니다.

문제에 대한 통찰력이 있으십니까?

답변

0

나는 또한 인터 워크에서 그 링크를 발견했지만 몇 가지 문제가 발생했습니다. 동적 매개 변수를 사용하기 위해 일부 코드를 활용할 수있었습니다. 아래 코드에서 서버의 URL을 업데이트하고 통합 문서를 가리키며 통합 문서에 사용 된 & 필터 매개 변수를 가리 킵니다. html과 javascript에 대한 지식이 거의 없으므로 코드가 꽤 효율적이거나 효율적이지는 않지만 저에게는 효과적입니다. 어떤 문제가 발생하면 알려주세요.

주 - Tableau Javascript API를 사용하려면 통합 문서가 반드시 tableau 서버에 있어야합니다.

<!DOCTYPE html> 
<html> 

<head> 
<title>Prototype</title> 
<script type="text/javascript" src="https://yourserver/javascripts/api/tableau-2.min.js"></script> 
<script type="text/javascript"> 
var viz, containerDiv 
    function initViz() { 
     containerDiv = document.getElementById("vizContainer"), 
      url = "https://yourserver/views/yourworkbook/yourdashboard", 
      options = { 
        onFirstInteractive: function() { 
        console.log("Run this code when the viz has finished loading."); 
        mainWorkbook = viz.getWorkbook(); 
       } 
      }; // end options 

     // Create a viz object and embed it in the container div. 
     viz = new tableau.Viz(containerDiv, url, options); 
     viz.addEventListener(tableauSoftware.TableauEventName.FILTER_CHANGE, function(e){ 
      if (e.getFieldName() == 'Filter1'){ 
      e.getFilterAsync().then(function(filter) { 
       var values = filter.getAppliedValues(); 
       var value = values[0]['value']; 
       // Value of the parameter if "All" is selected in the filter. 
       if (values.length > 1) { 
        value = 'All'; 
       } 
       viz.getWorkbook().changeParameterValueAsync('Parameter1', value); 
      }); 
      } // end if statement 
     }); // end event listener 
    } // end initViz 
</script> 

<body onload="initViz();"> 
<div id="vizContainer" style="width:800px; height:700px;"></div> 

</body> 

</html> 
+0

당신은 통합 문서에서 아무것도 변경 했습니까? – dcrowley01

+0

첫번째'