Tableau 웹 데이터 커넥터(WDC)를 사용하여 Tableau Desktop에서 자사 데이터를 연결해 보았습니다.

16568 단어 TableauWDCapi

했던 일



Tableau의 풍부한 외부 데이터 연계 중 하나인 웹 데이터 커넥터(WDC)를 사용해 보았습니다.

기본적으로 튜토리얼 대로 진행하고 있습니다.

구성



· Tableau Desktop
· HTML 파일 1개
· 통신용 JavaScript 파일 1개
・데이터 반환용 API(별도 준비)

※WDC의 Authentication은 이용하지 않고, 자사 API의 인증 기구를 이용했습니다.

HTML 파일



거의 샘플과 같습니다만, WDC용 데이터를 동적으로 작성할 수 있도록 파라미터를 3개 준비하고 있습니다.

index.html
<html>

<head>
    <title>VALUES Data Connect Sample</title>
    <meta http-equiv="Cache-Control" content="no-store" />

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" crossorigin="anonymous"></script>

    <script src="https://connectors.tableau.com/libs/tableauwdc-2.3.latest.js" type="text/javascript"></script>
    <script src="values_wdc.js" type="text/javascript"></script>
</head>

<body>
    <div class="container container-table">
        <div class="row vertical-center-row">
            <div class="text-center col-md-4 col-md-offset-4">
                prease input your API Key:<input type="text" id="apikey" value=""><br>
                param1:<input type="text" id="param1" value="xxxxxx"><br>
                param2:<input type="text" id="param2" value="xxxxxxxxxxxxx"><br>
                param3:<input type="text" id="param3" value="xxx"><br>
                <button type="button" id="submitButton" class="btn btn-success" style="margin: 10px;">Get VALUES Data!</button>
                <br>


            </div>
        </div>
    </div>
</body>

</html>

통신용 JavaScript 파일



이쪽도 샘플을 참고로, 취득한 데이터를 배열에 push 해 가면 좋을 뿐이므로 간단합니다.
API의 편의상 application/json에서 POST에서 요청 헤더 추가 등이 필요하므로 샘플과 다릅니다.

tableau.connectionName은 연결 이름이고 tableSchema.alias는 테이블 이름입니다.
이번과 같이 폼 데이터를 연계하는 경우, 후술하는 바와 같이 읽을 때

tableau.connectionData
라는 식으로 데이터를 연계해야합니다.

values_wdc.js
    var myConnector = tableau.makeConnector();

    myConnector.getSchema = function (schemaCallback) {
    var cols = [
//割愛
        ];

    var tableSchema = {
        id: "test_table",
        alias: "xxxxxxxxxxxx",
        columns: cols
    };

    schemaCallback([tableSchema]);
    };

    myConnector.getData = function (table, doneCallback) {
        var args = JSON.parse(tableau.connectionData);
        str_param1 = args.param1;
        str_param2 = args.param2;
        str_param3 = args.param3;
        str_apikey = args.apikey;

        rdata = {param1:str_param1,param2:str_param2, param3:str_param3}
        $.ajax({
            beforeSend: function(request) {
                request.setRequestHeader("Content-Type", 'application/json');
                request.setRequestHeader("API-KEY", str_apikey);
            },
            contentType: 'application/json',
            type:'POST',
            dataType: "json",
            data:JSON.stringify(rdata),
            url: '/xxxxxxx/wdctestapi',
            success: function(resp) {
                //Your code
                var feat = resp.result,
                    tableData = [];

                // Iterate over the JSON object
                for (var i = 0, len = feat.length; i < len; i++) {
                    tableData.push({
// 割愛
                    });
                }

                table.appendRows(tableData);
                doneCallback();

            }
        });
    };

    tableau.registerConnector(myConnector);


})();


$(document).ready(function () {

    $("#submitButton").click(function () {
        var param1 = document.getElementById('param1').value;
        var param2 = document.getElementById('param2').value;
        var param3 = document.getElementById('param3').value;
        var apikey = document.getElementById('apikey').value;
        tableau.connectionData = JSON.stringify({ param1: param1, param2: param2, param3: param3, apikey: apikey });

        tableau.connectionName = "VALUES DataConnect Test";
        tableau.submit();

    });

});


Tableau Desktop에서 연결



이쪽도 간단하고, 데이터 소스로부터 「웹 데이터 커넥터」를 선택해, WEB 서버에 둔 상술한 HTML 파일을 지정하는 것 뿐입니다. 그러면 아래 이미지와 같은 브라우저가 시작되고 버튼을 누르면 다른 데이터 소스처럼 데이터를 가져올 수 있었습니다.


1회 이렇게 HTML이 끼워지기 때문에, 자유도나 확장성이 높아져, 이번은 파라미터로 지정한 항목에 의해, 반환되는 데이터가 동적으로 바뀌는 느낌으로 하고 있습니다.

이상, 쉽게 Tableau에 자사 데이터를 가져올 수 있음을 확인했습니다.

소감



getSchema로 데이터를 정의하고 getData로 데이터를 검색하는 매우 간단한 흐름으로 구축할 수 있는 것이 인상적이었습니다. 원래 데이터가 웹을 통해 오는 것은 역시 꽤 괜찮은 느낌이 있습니다.

한편, WDC 경유로 차례차례로 데이터 세트를 추가해 UNION 해 나가는・・・라고 하는 것을 생각했습니다만 현시점에서는 Union에는 대응하지 않는다 과 같이 보입니다. 이것이 가능하면 더 Tableau와 Web이 연결되지 마라 ~라고 생각하기 때문에 희미하게 기대하고 있습니다.

좋은 웹페이지 즐겨찾기