Skip to content

[Feature] Support for BigInt #19237

@nantunes

Description

@nantunes

What problem does this feature solve?

I'm working with Apache Arrow data via Arquero, and I often deal with BigInt values (Apache Arrow's Int64 type). However, Apache ECharts currently stumbles on BigInt, throwing errors like Uncaught TypeError: Cannot convert a BigInt value to a number. There were some discussions (#13819, #12873) on this, but they didn't move forward.

BigInt support is needed for dealing with high-precision timestamps (sensor data) or large integers in datasets.

Apache Arrow is a portable format for storing column-oriented data, allowing data to be shared as-is between various systems and language runtimes. Arquero can process Arrow data directly and serialize data to the Arrow format. It can read from Apache Arrow columns out-of-the-box, enabling zero-copy query processing over loaded data.

I'm trying to avoid pre-processing the data (for casting BigInt to Number), as it is a big amount of data and I would lose the zero-copy optimizations and end up with multiple copies on memory (I already have to live with the unneeded clone of data).

What does the proposed API look like?

  1. Adapt Data Handling: Adjust the data handling parts to play nice with BigInt, especially around uses of the Math API and the isFinite method. E.g. detectValue at sourceHelper.js or parseDataValue at dataValueHelper.js.

  2. Type Conversion: Provide tools to switch between BigInt and Number if needed, while ensuring no loss in precision. However, this might not be necessary as all values of a dimension are of the same type.

  3. Option API Tweak: We can allow specifying bigint type in the dataset's dimensions, although the type should be easy to guess by looking at the data.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enThis issue is in Englishnew-featurependingWe are not sure about whether this is a bug/new feature.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions