::Tableau Data Extract API::Use the Tableau Data Extract API to connect to data that is not a supported data source. With
the Tableau Data Extract API, you create a program that accesses and processes your data.
You then use that program to create a Tableau Data Extract (TDE) file.
The Data Extract API is available for developers on Windows platforms. Go to http://www-
.tableausoftware.com/data-extract-api, and choose the appropriate version for your platform
and programming language:
- Data Extract API – Python – 32-bit
- Data Extract API – Python – 64-bit
- Data Extract API - C/C++/Java – 32-bit
- Data Extract API - C/C++/Java - 64bit
::Notes for Developers::The Data Extract API includes a sample program, makeorder, coded in each supported language
to demonstrate a typical usage scenario: creating an extract containing product orders.
The application creates the extract order.tde with several columns of different types. The general
flow of the sample programs is:
1. Open an Extract object to create a new file.
2. Define the extract’s schema using a TableDefinition.
3. Add the Extract table.
4. Insert rows.
5. Close all objects.
It is important to free memory by closing all objects, and it is particularly critical to ensure
Extract objects are cleaned up properly, particularly in non-native execution environments. See
the note sections below for language-specific details.
String columns in a Data Extract can be 8- or 16-bit and can be sorted according to many available
collations. By default, strings are sorted according to their binary representation, though
this can be changed on a per-table or per-column basis.
::Python Notes::Objects in the Data Extract API are automatically closed by _del_ when necessary. While garbage collection handles the vast majority of concerns related to releasing resources, it is important to note that the virtual machine provides no guarantee that any particular object will ever be freed. While most objects are merely memory, Extract objects represent physical files
created when close is invoked. Therefore, it is not safe to rely on garbage collection to close
Extract objects. We recommend using with statements to ensure Extract instances are
cleaned up. Alternatively, you can explicitly call close
::Java Notes::Data Extract API objects are automatically closed by finalize() as necessary. The Java
Virtual Machine does not guarantee that any particular object is ever garbage collected. While
most objects are merely memory that can be safely reclaimed by the operating system at JVM
shutdown, Extract objects represent physical files that are created when close() is invoked.
Therefore, it is important to invoke Java Notes Data Extract API objects are automatically closed by finalize() as necessary. The Java Virtual Machine does not guarantee that any particular object is ever garbage collected. While most objects are merely memory that can be safely reclaimed by the operating system at JVM shutdown, Extract objects represent physical files that are created when close() is invoked.Therefore, it is important to invoke Extract.close() for all Extract instances. We recommend using the try-with-resources construct introduced in Java 7. For earlier versions of Java, you must call Java Notes
::C++ Notes::Data Extract API objects should be managed according to standard memory management
best practices, such as using stack variables or smart pointers. As in other languages, all
objects have a Close() method to free internal resources. Close() is invoked by the
destructor when necessary. However, it is important to note that Extract::Close() may
throw an exception, so it is safer to call it explicitly, rather than allowing an exception to potentially escape the destructor.
::C Notes::Objects in the Data Extract C API are managed through opaque TAB_HANDLEs. Every
created object must be closed. It is advisable to free objects in the reverse order of creation. explicitly.