[Feature] Support for BigInt
- Dominant language
- TypeScript
- Stars
- 67.3k
- Forks
- 19.8k
- Avg merge
- 11d 14h
- Merged PRs (30d)
- 8
Description
### 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](https://github.com/apache/echarts/issues/13819), [#12873](https://github.com/apache/echarts/issues/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](https://github.com/apache/echarts/issues/17656)).
### 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.
Contributor guide
Assessment
This issue has not been assessed yet.