Coder Social home page Coder Social logo

tdebuilder's Introduction

tdeBuilder

Introduction

Scope and Purpose

TdeBuilder is used to create .tde files from input data without having to use tableau desktop. This allows you to schedule .tde file creation using scheduling software. Data can first be joined and or modified using an ETL tool and then dumped to text files. Tdebuilder can read in those text files and create a TDE.

TDE files are compressed and indexes are created on columns that allows for faster reporting and query retrieval in Tableau Desktop. TDE files also use less disk space is than text files.

Process Overview

  1. Create needed data using an ETL tool and output data to text files.
  2. Use tdebuilder.py to create .tde file
    1. Optional: set JSON settings file to upload .tde to server
  3. Open .tde file in Tableau Desktop

Dependencies

  1. Tableau SDK API – downloadable from tableau
    1. Download: http://onlinehelp.tableau.com/current/api/sdk/en-us/SDK/tableau_sdk_installing.htm#downloading
    2. Tableau SDK API usage: https://onlinehelp.tableau.com/current/api/sdk/en-us/help.htm
    3. Tableau SDK API development: http://onlinehelp.tableau.com/current/api/sdk/en-us/SDK/Python/html/index.html
  2. Python 2.6 or above.
    1. Download: https://www.python.org/downloads/

JSON

JSON is built on two universal structures:

  1. A collection of name and value pairs.
  2. An ordered list of values

An object is an unordered set of name and value pairs. An object begins with { (left brace) and ends with} (right brace). Each key if followed by: (colon) and the name value pairs are separated by, (comma).

The last entry in a list should NOT have a comma after it.

Structure

Object

    \{\}

    \{members\}

Members

    Pair

    Pair,members

Pair

    String:value

Array

    \[\]

    \[elements\]

Elements

    Value

    Value,elements

Value

    String

Number

Object

Array

True

False

Null

Example

"columns":\{

        "Admit Date": "Date",

        "Discharge Date":"Date",

        "Patient Name": "Text",

        "Address":"Text",

        "Proc Flag":"Double"

    \},

Configuration JSON Syntax

Root Keys

There root keys are as follows and are further explained in following chapters:

  1. parameters : contains a JSON of parameters
  2. tde_filename
    1. Contains a string containing the filename to be output to
  3. input
    1. Contains a JSON of information about the input data
  4. columns
    1. Contains a JSON of column information
  5. server_upload
    1. Contains a JSON of server connection information

Example:

{

    "parameters":{

        "Entity":{

            "default":"BHM"

        },

        "fileExt":{

            "default":".txt"

        }

    },

    "tde_filename": "test_$(Entity).tde",

    "input":{

        "type": "file",

        "file_info":{

            "input_type":"starname",

            "input_file_name":"data$(fileExt)",

            "delimiter":"t",

            "column_headers":"column_headers"

            }

    },

    "columns":{

        "Admit Date": "Date",

        "Discharge Date":"Date",

        "Patient Name": "Text",

        "Address":"Text",

        "Proc Flag":"Double"

    },

    "server_upload":{

        "server_address": "https://blabla.bla.org",

        "server_login": "tableau",

        "server_password_encoded": "VFl2JnlCYUpHZ0dZe"

    }

}

parameters

Parameters are used to replace text in a value. As an example you may want to reuse the same JSON configuration file for two similar input text files. Adding a parameter allows you to reuse your JSON configuration file.

Parameters are defined in the “parameters” key section of the configuration file. Reference a parameter later on in your script like so: $([name]).

Example:

"parameters":{

    "Entity":{

        "default":"BHM"

    },

    "fileExt":{

        "default":".txt"

    }

},

Example of this parameter being used

"tde_filename": "test_$(Entity).tde",

tde_filename

This key is used to set the output name to be given to the .tde file created.

Example

"tde\_filename": "test\_$\(Entity\)\.tde",

input

This key is used to define input type. Currently the only input type supported is “file”

Input types

  1. Type
    1. file - file input; if the type is file then file_info is required
    2. file_info
      1. input_type
        1. starname - read in a list of files using asterisks as a wildcard for multi-file reads
      2. input_file_name
        1. name of the input file or files using a wildcard asterisks
      3. delimiter
        1. delimiter used in the input file
      4. columns_headers
        1. columns_headers – file has column headers
        2. standard - file does not have column headers use definitions in column section to label files

Example

"input":{

    "type": "file",

    "file_info":{

        "input_type":"starname",

        "input_file_name":"data$(fileExt)",

        "delimiter":"t",

        "column_headers":"column_headers"

        }

},

columns

Column name is the key and the value is equal to the data type the column should be. This key is a sub key of the “input” key.

Data Types

The following data types are allowed:

  1. Bit
    1. Boolean True or False
    2. Example: 1,0
  2. Byte
    1. A whole number
    2. Example: 123
  3. Short
    1. A number with a decimal
    2. Example: 123.222
  4. Long
    1. A number with a decimal
    2. Example: 123.222
  5. Integer
    1. A whole number
    2. Example: 1235455
  6. Single
    1. A whole number
    2. Example: 55332
  7. Double
    1. A number with a decimal
    2. Example: 223434.22325423
  8. Date
    1. A date in the required format
    2. Format: YYYY-MM-DD or YYYYMMDD
    3. Example: 2016-02-21
  9. DateTime
    1. A date and time in the required format
    2. date in format YYYY-MM-DD HH:MM:SS.mm
    3. Example: 2016-02-02 01:05:22.23
  10. Text
    1. long text info
    2. Example: “John Doe”
  11. Memo
    1. long text info
    2. Example: “John Doe”

Example

"columns":{

    "Admit Date": "Date",

    "Discharge Date":"Date",

    "Patient Name": "Text",

    "Address":"Text",

    "Proc Flag":"Double"

},

server_upload

This key is used to set server settings to upload the .tde to tableau server. If this key is not in the JSON configuration the upload process is not attempted.

    1. server_upload
    1. server_address - address of your tableau server
    2. server_login - username to log in
    3. server_password_encoded - encoded password using the –p switch via the command line\.  \(see Password Encode\)

Example

"server_upload":{

    "server_address": "https://bla.bla.org",

    "server_login": "tableau",

    "server_password_encoded": "VFl2JnlCYUpHZ0d"

}

Password Encode

Passwords for the server upload configuration must first be scrambled using the –p switch via the command line.

Usage: tdeBuilder.py - [password]

The output will be the password to be entered into the server_upload |serverpassword_encoded field in your JSON settings file.

Example

    C:\\projects\\tableau\\extract>python tdeBuilder.py -p pass1234Blue

    encoded password:  cGFzczEyMzRCbHVl

Usage: tdeBuilder.py –p [password]

The output will be the password to be entered into the server_upload |serverpassword_encoded field in your JSON settings file.

Example

C:\\projects\\tableau\\extract>python tdeBuilder\.py \-p pass1234Blue

encoded password:  cGFzczEyMzRCbHVl

Running tdeBuilder.py

Via the command line

python tdeBuilder.py -i [JSON configuration\]

tdebuilder's People

Watchers

James Cloos avatar anukat2015 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.