You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by "BNyamkhuu (via GitHub)" <gi...@apache.org> on 2026/03/30 04:13:14 UTC

[D] How to sort time series column correctly in Time-Series table ? [superset]

GitHub user BNyamkhuu created a discussion: How to sort time series column correctly in Time-Series table ?

Dear developers,

In the "Time-Series Table" chart, clicking a column header to sort the data fails to sort numerically if the column has a D3 Number Format applied or is configured to display a Sparkline (in the "Time series columns" setup).

There appear to be two underlying causes compounding this issue:

D3 Formatting converts to String: When applying formats that append suffixes (e.g., k, M) or fixed decimals (e.g., ,.2f), the frontend table sorts the values lexicographically (alphabetically) rather than numerically. For example, 84k is sorted higher than 2.9M and 150k.

Sparkline Object Wrapper: When a metric is configured as a "Time series column" to display a sparkline, the underlying cell value seems to be passed as a complex object/array to render the chart. When a user clicks the column header, the native frontend sorting logic fails to parse the raw numeric value from this object, resulting in broken or random sorting.

Expected behavior:
Clicking a column header should always sort the rows numerically based on the raw, unformatted backend value of the metric, regardless of the D3 visual formatting applied or whether a Sparkline is rendered in the cell.

Current Workarounds (Sub-optimal):

Casting the metric to ::FLOAT in the Virtual Dataset SQL does not solve the frontend sorting issue. Therefore, I delete number format in the chart settings doesn't solve the sorting issue.


Environment:

Superset version: 0.0.0.dev0 - superset_superset docker image pull 4 months ago. When we running docker container, it's so confusing. 

Database: PostgreSQL

GitHub link: https://github.com/apache/superset/discussions/38937

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] How to sort time series column correctly in Time-Series table ? [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] added a comment to the discussion: How to sort time series column correctly in Time-Series table ?

<!-- Greeting -->
Hi @BNyamkhuu! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the superset team.

<!-- Answer -->
Both issues you're describing — D3-formatted columns sorting lexicographically and Sparkline columns failing to sort — have been identified and fixed in recent PRs:

1. **Column sorting always falling back to the first column** (which affects both D3-formatted and Sparkline columns): The root cause was that the `sortNumberWithMixedTypes` comparator tried to access a `data-value` prop that didn't actually exist in react-table's row model, causing every comparison to return `0` (equal) and fall back to the default first-column sort. This was fixed in [PR #38579](https://github.com/apache/superset/pull/38579) (merged March 19, 2026), which rewrites the sort function to extract the raw numeric value directly from each cell's React props — handling both ValueCell and SparklineCell types [[1]](https://github.com/apache/superset/pull/38579) [[2]](https://github.com/apache/superset/pull/38579).

2. **D3 formatter initialization causing string-based sorting**: A separate issue where `setupFormatters` was called asynchronously (after first render), which could cause numbers to be treated as plain strings. This was fixed in [PR #35529](https://github.com/apache/superset/pull/35529) (merged October 2025) by making the formatter setup synchronous [[3]](https://github.com/apache/superset/pull/35529).

Since you're running a Docker image from ~4 months ago (likely pre-dating the March 2026 fix), **upgrading to a newer Superset build that includes PR #38579** should resolve both the D3-format sorting and Sparkline sorting issues you're experiencing.

There are also two open PRs that address remaining edge cases:

- [PR #38094](https://github.com/apache/superset/pull/38094) — fixes null values being coerced to `0` instead of preserved as `null` [[4]](https://github.com/apache/superset/pull/38094)
- [PR #38828](https://github.com/apache/superset/pull/38828) — fixes sorting for date-prefixed or complex column keys where the row value lookup can fail [[5]](https://github.com/apache/superset/pull/38828)


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=brand-link).*

---
<sup>How did I do? [Good](https://app.dosu.dev/response-feedback/bc369e8c-4a89-4ae8-be28-052c60e7b4a4?feedback_type=great_response&utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/bc369e8c-4a89-4ae8-be28-052c60e7b4a4?feedback_type=irrelevant_answer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/bc369e8c-4a89-4ae8-be28-052c60e7b4a4?feedback_type=incorrect_sources&utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/bc369e8c-4a89-4ae8-be28-052c60e7b4a4?feedback_type=too_verbose&utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/bc369e8c-4a89-4a
 e8-be28-052c60e7b4a4?feedback_type=hallucination&utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/bc369e8c-4a89-4ae8-be28-052c60e7b4a4?feedback_type=bug_report&utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-bug_report) | [Other](https://app.dosu.dev/response-feedback/bc369e8c-4a89-4ae8-be28-052c60e7b4a4?feedback_type=other&utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-other)</sup>

[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/a28d3c7e-a9d3-459e-9fb6-3a6f9ff4f357/ask?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=chat-badge)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=Both%20issues%20you%27re%20describing%20%E2%80%94%20D3-formatted%20columns%20sorting%20lexicographically%20and%20Sparkline%20columns%20failing%20to%20sort%20%E2%80%94%20have%20been%20identified%20and%20fixed%20in%20recent%20PRs%3A%0A%0A1.%20%2A%2AColumn%20sorting%20always%20falling%20back%20to%20the%20first%20column%2A%2A%20%28which%20affects%20both%20D3-formatted%20and%20Sparkline%20columns%29%3A%20The%20root%20cause%20was%20that%20the%20%60sortNumberWithMixedTypes%60%20comparator%20tried%20to%20access%20a%20%60data-value%60%20prop%20that%20didn%27t%20actually%20exist%20in%20react-table%27s%20row%20model%2C%20causing%20every%20comparison%20to%20return%20%600%60%20%28equal%29%
 20and%20fall%20back%20to%20the%20default%20first-column%20sort.%20This%20was%20fixed%20in%20%5BPR%20%2338579%5D%28https%3A//github.com/apache/superset/pull/38579%29%20%28merged%20March%2019%2C%202026%29%2C%20which%20rewrites%20the%20sort%20function%20to%20extract%20the%20raw%20numeric%20value%20directly%20from%20each%20cell%27s%20React%20props%20%E2%80%94%20handling%20both%20ValueCell%20and%20SparklineCell%20types%20%5B%5B1%5D%5D%28https%3A//github.com/apache/superset/pull/38579%29%20%5B%5B2%5D%5D%28https%3A//github.com/apache/superset/pull/38579%29.%0A%0A2.%20%2A%2AD3%20formatter%20initialization%20causing%20string-based%20sorting%2A%2A%3A%20A%20separate%20issue%20where%20%60setupFormatters%60%20was%20called%20asynchronously%20%28after%20first%20render%29%2C%20which%20could%20cause%20numbers%20to%20be%20treated%20as%20plain%20strings.%20This%20was%20fixed%20in%20%5BPR%20%2335529%5D%28https%3A//github.com/apache/superset/pull/35529%29%20%28merged%20October%202025%29%20by%20making%20
 the%20formatter%20setup%20synchronous%20%5B%5B3%5D%5D%28https%3A//github.com/apache/superset/pull/35529%29.%0A%0ASince%20you%27re%20running%20a%20Docker%20image%20from%20~4%20months%20ago%20%28likely%20pre-dating%20the%20March%202026%20fix%29%2C%20%2A%2Aupgrading%20to%20a%20newer%20Superset%20build%20that%20includes%20PR%20%2338579%2A%2A%20should%20resolve%20both%20the%20D3-format%20sorting%20and%20Sparkline%20sorting%20issues%20you%27re%20experiencing.%0A%0AThere%20are%20also%20two%20open%20PRs%20that%20address%20remaining%20edge%20cases%3A%0A%0A-%20%5BPR%20%2338094%5D%28https%3A//github.com/apache/superset/pull/38094%29%20%E2%80%94%20fixes%20null%20values%20being%20coerced%20to%20%600%60%20instead%20of%20preserved%20as%20%60null%60%20%5B%5B4%5D%5D%28https%3A//github.com/apache/superset/pull/38094%29%0A-%20%5BPR%20%2338828%5D%28https%3A//github.com/apache/superset/pull/38828%29%20%E2%80%94%20fixes%20sorting%20for%20date-prefixed%20or%20complex%20column%20keys%20where%20the%20row%20
 value%20lookup%20can%20fail%20%5B%5B5%5D%5D%28https%3A//github.com/apache/superset/pull/38828%29)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=join-discord)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/discussions/38937)

GitHub link: https://github.com/apache/superset/discussions/38937#discussioncomment-16375648

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] How to sort time series column correctly in Time-Series table ? [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] edited a comment on the discussion: How to sort time series column correctly in Time-Series table ?

<!-- Greeting -->
Hi @BNyamkhuu! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the superset team.

<!-- Answer -->
Both issues you're describing — D3-formatted columns sorting lexicographically and Sparkline columns failing to sort — have been identified and fixed in recent PRs:

1. **Column sorting always falling back to the first column** (which affects both D3-formatted and Sparkline columns): The root cause was that the `sortNumberWithMixedTypes` comparator tried to access a `data-value` prop that didn't actually exist in react-table's row model, causing every comparison to return `0` (equal) and fall back to the default first-column sort. This was fixed in [PR #38579](https://github.com/apache/superset/pull/38579) (merged March 19, 2026), which rewrites the sort function to extract the raw numeric value directly from each cell's React props — handling both ValueCell and SparklineCell types [[1]](https://github.com/apache/superset/pull/38579) [[2]](https://github.com/apache/superset/pull/38579).

2. **D3 formatter initialization causing string-based sorting**: A separate issue where `setupFormatters` was called asynchronously (after first render), which could cause numbers to be treated as plain strings. This was fixed in [PR #35529](https://github.com/apache/superset/pull/35529) (merged October 2025) by making the formatter setup synchronous [[3]](https://github.com/apache/superset/pull/35529).

Since you're running a Docker image from ~4 months ago (likely pre-dating the March 2026 fix), **upgrading to a newer Superset build that includes PR #38579** should resolve both the D3-format sorting and Sparkline sorting issues you're experiencing.

There are also two open PRs that address remaining edge cases:

- [PR #38094](https://github.com/apache/superset/pull/38094) — fixes null values being coerced to `0` instead of preserved as `null` [[4]](https://github.com/apache/superset/pull/38094)
- [PR #38828](https://github.com/apache/superset/pull/38828) — fixes sorting for date-prefixed or complex column keys where the row value lookup can fail [[5]](https://github.com/apache/superset/pull/38828)


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=apache%2Fsuperset).*

---

Share context across your team and agents. Try [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-tagline&utm_term=apache%2Fsuperset).

[![Leave Feedback](https://img.shields.io/badge/Leave%20Feedback-555555?style=flat)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-feedback&utm_term=apache%2Fsuperset&message_id=bc369e8c-4a89-4ae8-be28-052c60e7b4a4) [![Learn about superset with Dosu](https://img.shields.io/badge/Learn%20about%20superset%20with%20Dosu-2f7b3f?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODkiIHZpZXdCb3g9IjAgMCA4NiA4OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTIzNiAxMi43OTI4TDE3Ljc1OTMgNi42ODE4OFY3Mi41NjY3TDUuMjkyMzYgODQuMDYxOFYxMi43OTI4WiIgZmlsbD0iI0I0QkI5MSIvPjxwYXRoIGQ9Ik0xOC4yNTc1IDczLjExOTZMNTkuMTMyOSA3Mi43NDhMNTEuNzAxMSA4Mi40MDk1TDI5LjAzMzggODYuMjkxTDYuMjM5NjIgODUuMTU1NEwxOC4yNTc1IDczLjExOTZaIiBmaWxsPSIjNzc4NTYxIi8%2BPHBhdGggZD0iTTE3LjQ5MTYgMy43MzYzM0wzLjU4NTU3IDEyLjcwOTlWODMuNTc5MkMzLjU4NTU3IDg0Ljc1NDIgNC4
 5ODU2MyA4NS4zNjUyIDUuODQ3MDUgODQuNTY2TDE5LjYyOTYgNzEuNzgwMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjQyODQ0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48bWFzayBpZD0iZG9zdS1kLWN1dG91dCIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAuNzA0IDAuNTE4MDY2SDE3LjA0MzlWNzYuMjIyMUg0MC43MDRINDIuNTgwNUg0Ny44MDEzQzY4LjcwNjQgNzYuMjIyMSA4NS42NTMzIDU5LjI3NTIgODUuNjUzMyAzOC4zNzAxQzg1LjY1MzMgMTcuNDY1IDY4LjcwNjMgMC41MTgwNjYgNDcuODAxMyAwLjUxODA2Nkg0Mi41ODA1SDQwLjcwNFoiLz48L21hc2s%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MC43MDQgMC41MTgwNjZIMTcuMDQzOVY3Ni4yMjIxSDQwLjcwNEg0Mi41ODA1SDQ3LjgwMTNDNjguNzA2NCA3Ni4yMjIxIDg1LjY1MzMgNTkuMjc1MiA4NS42NTMzIDM4LjM3MDFDODUuNjUzMyAxNy40NjUgNjguNzA2MyAwLjUxODA2NiA0Ny44MDEzIDAuNTE4MDY2SDQyLjU4MDVINDAuNzA0WiIgZmlsbD0iI0YzRjZGMSIvPjxwYXRoIGQ9Ik0xNy4wNDM5IDAuNTE4MDY2Vi02LjU3OTE5SDkuOTQ2NjlWMC41MTgwNjZIMTcuMDQzOVpNMTcuMDQzOSA3Ni4yMjIxSDkuOTQ2NjlWODMuMzE5NEgxNy4wNDM5Vjc2LjIyMjFaTTE3LjA0MzkgNy42MTUzMkg0MC43MDRWLTYuNT
 c5MTlIMTcuMDQzOVY3LjYxNTMyWk0yNC4xNDEyIDc2LjIyMjFWMC41MTgwNjZIOS45NDY2OVY3Ni4yMjIxSDI0LjE0MTJaTTQwLjcwNCA2OS4xMjQ5SDE3LjA0MzlWODMuMzE5NEg0MC43MDRWNjkuMTI0OVpNNDIuNTgwNSA2OS4xMjQ5SDQwLjcwNFY4My4zMTk0SDQyLjU4MDVWNjkuMTI0OVpNNDcuODAxMyA2OS4xMjQ5SDQyLjU4MDVWODMuMzE5NEg0Ny44MDEzVjY5LjEyNDlaTTc4LjU1NiAzOC4zNzAxQzc4LjU1NiA1NS4zNTU1IDY0Ljc4NjcgNjkuMTI0OSA0Ny44MDEzIDY5LjEyNDlWODMuMzE5NEM3Mi42MjYxIDgzLjMxOTQgOTIuNzUwNSA2My4xOTQ5IDkyLjc1MDUgMzguMzcwMUg3OC41NTZaTTQ3LjgwMTMgNy42MTUzMkM2NC43ODY2IDcuNjE1MzIgNzguNTU2IDIxLjM4NDcgNzguNTU2IDM4LjM3MDFIOTIuNzUwNUM5Mi43NTA1IDEzLjU0NTMgNzIuNjI2IC02LjU3OTE5IDQ3LjgwMTMgLTYuNTc5MTlWNy42MTUzMlpNNDIuNTgwNSA3LjYxNTMySDQ3LjgwMTNWLTYuNTc5MTlINDIuNTgwNVY3LjYxNTMyWk00MC43MDQgNy42MTUzMkg0Mi41ODA1Vi02LjU3OTE5SDQwLjcwNFY3LjYxNTMyWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjZG9zdS1kLWN1dG91dCkiLz48cGF0aCBkPSJNNjguOTIxNSAzNi4wMTM1QzY4LjkyMTUgMzYuMDEzNSA2NS43MzY5IDQ5LjQ3MzggNTEuNDIzMSA0OS40NzM4QzM3LjEwOTMgNDkuNDczOCAzMi41Nzg3IDM3LjM1OTYgMzIuNTc4NyAzNi4wMTM1IiBzdHJva2U9ImJsYWNrIiB
 zdHJva2Utd2lkdGg9IjcuNjkxNjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0wLjM0ODYzMyA4NS40OTQ2QzAuMzQ4NjMzIDg1LjQ5NDYgMjkuNDg1NiA4NS44MzA5IDM0LjgwOSA4NS42OThDNDQuODMzNyA4NS40NDc3IDUxLjI4NzIgODQuNDAyIDU3LjUyNjkgNzguOTcyNEM2Mi44MTI5IDc0LjM3MjcgNzUuMTM0MiA1OS42ODM2IDc1LjEzNDIgNTkuNjgzNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjE2NDgyIi8%2BPC9zdmc%2B)](https://github.dosu.com/apache/superset?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-learn-repo&utm_term=apache%2Fsuperset) [![Add Dosu to your team](https://img.shields.io/badge/Add%20Dosu%20to%20your%20team-1f6feb?style=flat)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-add-team&utm_term=apache%2Fsuperset)

GitHub link: https://github.com/apache/superset/discussions/38937#discussioncomment-16375648

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org