March 1, 2023
February 8, 2023
GROUPING SETS
SQL feature, including ROLLUP
and CUBE
.January 18, 2023
December 7, 2022
NUMERIC
SQL type.DECIMAL
values from parquet files.NUMERIC
data type.ANY_VALUE
aggregate function: The ANY_VALUE
aggregate function returns an arbitrary, implementation-defined value from the set of input values within a group.November 9, 2022
2022d
of the Time Zone Database. Hyper’s time zone information is updated accordingly. Noteworthy changes:
October 5, 2022
2022c
of the Time Zone Database. Hyper’s time zone information is updated accordingly. Noteworthy changes:
September 7, 2022
s3_location(...)
. Omitting credentials now causes an error. For anonymous access to S3 provide empty credentials (""
) instead.August 3, 2022
July 13, 2022
2022a
of the Time Zone Database. Hyper’s time zone information is updated accordingly. Noteworthy changes:
2022-03-27
, not 2022-03-26
.02:00 standard time
, not at 01:00 UTC
.June 1, 2022
May 4, 2022
March 23, 2022
March 2, 2022
February 2, 2022
Improved external file format support (CSV & Apache Parquet): Now you can use Hyper as a SQL query engine directly on top of open formats and data lakes.
Hyper now has experimental support for reading external data directly from Amazon S3. You need to enable the experimental_external_s3 setting to use this feature and be aware that it can change or be removed at any time without prior notice.
Hyper’s S3 capabilities are highly optimized (using techniques such as concurrent requests, request hedging and prefetching). For maximum performance, ensure a high network bandwidth to Amazon S3, e.g., by running HyperAPI directly on an AWS EC2 instance.
external
function.
The old syntax is still supported for PostgreSQL compatibility but its use is discouraged.ARRAY[...]
syntax enables reading from multiple files when using the external
function, external tables,
or the COPY
command..gz
will automatically be assumed to be GZip-compressed.January 5, 2022
December 8, 2021
Noteworthy changes in the Time Zone Database:
* Palestine will fall back 10-29 (not 10-30) at 01:00.
* Fiji suspends DST for the 2021/2022 season.
* Jordan now starts DST on February's last Thursday.
* Samoa no longer observes DST.
* Merge more location-based Zones whose timestamps agree since 1970.
* Rename Pacific/Enderbury to Pacific/Kanton.
November 3rd, 2021
PARTITION BY
clause improved by 5% - 20%PARTITION BY
and ORDER BY
clauses, e.g. ROW_NUMBER() OVER()
, by 10% - 25%October 6, 2021
September 1, 2021
SELECT db.schema.table.column ...
)August 4, 2021
July 7, 2021
June 9, 2021
May 19, 2021
__repr__()
methods and will return a string representation of the object when printed, making interactive exploring of the Hyper API more fun.April 7, 2021
March 10, 2021
February 17, 2021
2021a
of the Time Zone Database. Hyper’s time zone information is updated accordingly. Noteworthy changes:
-07
on 2020-11-01
, not 2020-03-08
.+08
in winter and +11
in summer.2020-12-20
.2020-10-24
.2020-12-27
at 02:00
.+03
to +02
on 2021-02-01
at 00:00
.January 20, 2021
Create hyper file from csv
example: We highlight the usage of the HEADER
COPY option which ignores the first line in a csv file.getShort()
method to return a short
instead of an int
.December 16, 2020
December 2, 2020
November 9, 2020
HyperProcess
: Starting Hyper is now 4x faster. For example, on our internal Linux computers, we measured 11 milliseconds startup time instead of previously 44 milliseconds.TableDefinition.Column.collation
represents the default collation with None
now. Previously, the results of catalog.get_table_definition
used ''
for the default collation. This is a breaking change.September 30, 2020
ResultIterator
or ChunkIterator
iterators are constructed over the same hyperapi::Result
object.noexcept
specification from the ResultIterator()
and ChunkedIterator()
constructors for begin iterators. These functions may fail by throwing std::bad_alloc
or hyperapi::HyperException
. Those were previously flagged as noexcept
even though they could have thrown.\.
. The marker could be used to mark the end of CSV and TEXT input. Hyper now solely relies on the end-of-file condition to determine the end.August 26, 2020
HyperProcess
class that were deprecated since version 0.0.10309:
log-dir
: Use log_dir
instead.:restrict_database_directory
: Not required since Hyper no longer creates database files in the working directory.:database_directory
: Not required since Hyper no longer creates database files in the working directory.:log_file_size_limit
: Use log_file_size_limit
instead.:log_file_max_count
: Use log_file_max_count
instead.July 30, 2020
June 24, 2020
geo_make_point
and geo_make_line
).geo_distance
and geo_buffer
).geo_auto_vertex_order
and geo_invert_vertex_order
). These functions can be used to address problems (for example, with spatial joins or to automatically zoom) where data comes from a source that uses a different winding order for polygons than the one used by Tableau. In Tableau, the interior of the polygon is considered to be on the left of the path drawn by points of the polygon ring..hyper
files. See Optimize Hyper File Storage and the defragment-data-of-existing-hyper-file sample on GitHub.May 27, 2020
Hyper now fully supports the options FORCE_NULL
and FORCE_NOT_NULL
for CSV parsing. By default, only unquoted values are compared to the null string to determine whether they represent a NULL
value. FORCE_NULL
toggles the same for quoted values. FORCE_NOT_NULL
disables comparison of non-quoted values with the null string. See COPY command.
Updated the target framework of the Hyper API for .NET example from .NET Core 2.2 to .NET Core 3.1. .NET Core 2.2 has already reached its end of life at 2019-12-23 and increasingly surfaced stability problems. We continue to target the .NET Standard 2.0 in the Hyper API for .NET.
IANA released version 2020a
of the Time Zone Database. Hyper’s time zone information is updated accordingly. Noteworthy changes:
2020-05-31
, not 2020-05-24
.-07
year-round on 2020-03-08
.America/Nuuk
was renamed from America/Godthab
.April 22, 2020
If you use the Hyper API and accidentally open a file that is not a Hyper file, you now see a more informative error message.
C++: Fixed a memory leak in the constructor of hyperapi::HyperProcess
when an invalid parameter was supplied.
The Python Hyper API now exposes a __version__
attribute and thus supports PEP 396.
March 25, 2020
The Hyper API Inserter
class now allows SQL expressions to compute or transform data on the fly during insertion.
The Hyper API Inserter
class now allows inserting Well-Known-Text (WKT) into Geography
columns. You can use the CAST
expression to transform WKT data to the Geography
type and provide WKT data as a string to the Inserter
class. For more information, see Add Spatial Data to a Hyper File.
Documented the available settings that can be passed to the HyperProcess
and Connection
constructors. See Settings.
Exposed settings for the HyperProcess
class that give control over the way Hyper communicates with its clients. See Connectivity Settings.
Exposed settings for the HyperProcess
class that give control over its logging behavior. See Logging Settings.
Exposed settings for the Connection
class that give control over date and time parsing. See Date and Time Settings.
The Hyper API no longer creates database files in the working directory. Instead, they are placed in a temporary directory. This makes it easier to use the Hyper API in write-protected working directories.
HyperProcess
class:
log-dir
: Now called log_dir
.:restrict_database_directory
: Not required since Hyper no longer creates database files in the working directory.:database_directory
: Not required since Hyper no longer creates database files in the working directory.:log_file_size_limit
: Now called log_file_size_limit
.:log_file_max_count
: Now called log_file_max_count
.The deprecated settings will continue to work for at least three releases. Afterwards, the deprecated settings will be removed.
The C++ HAPI now expects all settings (i.e., the keys and values of the parameters
map passed to the constructor of HyperProcess
and Connection
) to be passed in UTF-8 encoding.
Improved loading time for Python: import tableauhyperapi
now takes 100 milliseconds instead of 250 milliseconds.
to_date
function. See Data Type Formatting Functions.February 26, 2020
Reduced memory consumption for INSERT
: When inserting a large number of tuples using INSERT, Hyper API now uses less RAM. This is particularly important when copying large tables using INSERT INTO newtable SELECT * FROM oldtable
.
Simplified installation requirements on Windows: The Hyper API no longer requires that you install the Microsoft Visual C++ Runtime Library separately.
Smaller packages: Thanks to improvements to our build processes and packaging, the package size was reduced. For example, the size of an unpacked Python installation went from 186 MB to 174 MB. The download size of a packed Python package was reduced from 49 MB to 46 MB.
Bug fix for VALUES
clauses: In rare cases, Hyper evaluated a join against a LATERAL VALUES
clause incorrectly, leading to crashes or incorrect results. With this release, Hyper now evaluates such VALUES
clauses correctly.
Deprecations around the HyperExpection
class: The following changes were done to simplify the interface of the HyperException
class across languages. All of the deprecated functions can be replaced by their newly introduced alternatives. In general, these changes should only impact power users. For most use cases, we recommend using str(<exception>)
(Python), getMessage()
(Java), ToString()
(C#) or what()
(C++).
message
was deprecated in favor of main_message
and hint_message
was deprecated in favor of hint
. Furthermore, context_id
is now an instance of the ContextId
class and no longer a plain integer.getErrorMessage
was deprecated in favor of getMainMessage
.PrimaryMessage
property was deprecated in favor of MainMessage
.getHintMessage
was deprecated in favor of getHint
. getMessage
was deprecated in favor of getMainMessage
. Furthermore, HyperException::getCause
now returns a optional<HyperException>
instead of a HyperException
. The method hasCause
was deprecated.The old method names will stay unchanged and continue working for at least the next three releases of Hyper API. They will be removed at some point in future after that.
January 29, 2020
Improved time zone support. In particular, the TIMESTAMP WITH TIME ZONE
(or TIMESTAMPTZ
) type is now properly supported.
EXISTS
, IN
, ALL
). See Subquery Expressions.RANK()
). See Window Functions and Queries.generate_series
- See Set Returning Functions.The Tableau Hyper API no longer requires write access in the working directory.
Improved error handling and messages.
The Tableau Hyper API is available on the Python Package Index (PyPI). You can now install the Tableau Hyper API using the package installer, pip
.
pip install tableauhyperapi
Or, if you previously installed the package.
pip install --upgrade tableauhyperapi
Linux installations require pip
version 19.3 or newer. Note that pip
versions 20.0 and 20.1 are not working because of issues with pip
and not the Tableau Hyper API package.
Support for macOS 10.15 (Catalina). You can now install the Hyper API on computers running macOS 10.13 and later.
The HyperProcess
(hyperd.exe) on Windows no longer opens a terminal window (Issue 1039998).
Hyper is now reusing space freed by DELETE (Issue 1056751). In a rolling-window scenario (where old data is deleted in bulk before appending new data), previous versions of the Tableau Hyper API would not re-use the deleted space, causing the .hyper
file to grow. This problem is fixed with this release. In addition to the simple rolling window scenario, the fix also applies to other bulk deletion patterns.
UPDATE now supports multi-column subqueries in SET clauses. See UPDATE.
December 4, 2019
NuGet package for the Tableau Hyper API for .NET. You can now reference the Tableau Hyper API library from your project file as you would for other NuGet packages. See Install the Hyper API for .NET.
The Hyper API for Python now allows you to use pathlib.Path
to specify the hyper_path
when you start the HyperProcess. This is the path to the directory that contains the hyperd
executable file.
Support added for the asterisk (*
) in namespace-qualified column references. For example, you can select the columns from a table in a specified namespace using three-part names (schema_name.table_name.*
).
SELECT schema_name.table_name.*, schema_name2.table_name.* FROM schema_name.table_name, schema_name2.table_name ...
Support for quoted strings in CSV headers.
When Hyper is launched inside a container (for example, Docker), Hyper now respects the memory limits that are set for the container. Previously, Hyper would assume that full system memory was available.
Updated requirements. The Hyper API requires Microsoft Visual C++ Runtime Library version 19.15.26726 or later. You can download the library from Microsoft: Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019
October 30, 2019
Various bug fixes. See the Resolved Issues on the Hyper API Product Release and Download page.
Documentation updates to correct C++ installation instructions, platform support (macOS 10.15 not yet supported).
Changed in this release
In the Hyper API (Python), the name
parameter in the TableDefinition
method changed to table_name
.
If you use keyword arguments to define tables in the previous release of the Hyper API, you need to modify your code.
For example, if you were creating a table called airports
in the public
namespace (schema), you would need to make the following change.
Change:
airports_table = TableDefinition(name=TableName( "public", "airports"), ...)
To the following:
airports_table = TableDefinition(table_name=TableName("public", "airports"), ... )
Note, if you are using positional arguments, you can avoid this issue.
airports_table = TableDefinition(TableName("public", "airports"), ...)
October 2019
The Hyper API replaces the Extract API 2.0 for building applications that create and update Tableau extract files (.hyper
) for Tableau 10.5 and later. The Hyper API provides more capabilities and improved performance when compared to the previous API.
Use SQL statements to insert, read, update, and delete data in extract files
Copy data directly from CSV files
Create applications in Python, Java, C++, or .NET (C#)
Read data from .hyper
files
Update data in existing .hyper
files
Delete data from existing .hyper
files
Drastic performance improvements for extract creation
.hyper
)A Tableau Hyper database file (.hyper
) can only be opened by one process at a time. For example, you can’t have a .hyper
file opened in Tableau and at the same time use the Hyper API to read from or write to the same file.
You cannot open multiple connections to the same .hyper
file at the same time. However, you can connect to different .hyper
files from a single instance of the HyperProcess
. For example, you could read from one .hyper
file and insert or copy data to another .hyper
file.
The numeric
data type is not yet fully supported and has some minor semantics issues. If you run into problems using numeric
data types, consider using double
(for fractional types) or int
/big_int
(for integral types). (611295)
The Inserter
class cannot currently be used to insert data into temporary tables, as long as more than one database is attached to the connection. Consider filling temporary tables before attaching more than one database to a connection. (946869)
The parameters supported in the HyperProcess
and Connection
constructors are currently not documented. For now, you should not use any parameters at all. (946863)
The type CHAR(1) is currently not fully supported. However, you should refrain from using the CHAR type, as it is just intended for SQL standard compliance. Instead, you should always use the type TEXT for text columns. (946893)
The Hyper API Inserter
class does not allow inserting Well-Known-Text (WKT) data directly (spatial data). You have to insert the WKT data as a string into a temporary table and then cast it to the Geometry
type in Hyper. (952061) For more information, see Add Spatial Data to a Hyper File.
Character types are not yet fully supported.
If you get an error ERROR: [whl_file]
is not a supported wheel on this platform, check that you have a 64-bit Python installed and that you downloaded the correct wheel for your platform.
If you get an error message: error: invalid command ‘bdist_wheel’, you may need to upgrade pip. For example: venv/bin/pip install --upgrade pip
If you get an error message: HYPER:generic: The Hyper server process exited during startup with exit code: 1, check the startup parameters of the HyperProcess.
On a freshly installed Linux, you might need to upgrade pip. For example, you might need to run the following command: venv/bin/pip install --upgrade pip
On Windows, if you get an error The code execution cannot proceed because MSVCP140.dll was not found. Reinstalling the program may fix this problem., check if you have the correct Visual C++ runtime library installed on your computer. See the installation requirements (Install Hyper API).