You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ri...@apache.org on 2026/02/03 01:48:44 UTC
(superset) branch fix/currency-column-dropdown-calculated-cols created (now 4e3da4e2dd8)
This is an automated email from the ASF dual-hosted git repository.
richardfogaca pushed a change to branch fix/currency-column-dropdown-calculated-cols
in repository https://gitbox.apache.org/repos/asf/superset.git
at 4e3da4e2dd8 fix(dataset-editor): include calculated columns in currency code dropdown
This branch includes the following new commits:
new 4e3da4e2dd8 fix(dataset-editor): include calculated columns in currency code dropdown
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(superset) 01/01: fix(dataset-editor): include calculated columns in currency code dropdown
Posted by ri...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
richardfogaca pushed a commit to branch fix/currency-column-dropdown-calculated-cols
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 4e3da4e2dd8e4f2cc4582e5e7f47c93a1699e2a6
Author: richard <ri...@richards-MacBook-Pro-2.local>
AuthorDate: Mon Feb 2 22:48:15 2026 -0300
fix(dataset-editor): include calculated columns in currency code dropdown
The currency code column dropdown in the Dataset Editor only showed
physical columns with type_generic === String, which excluded calculated
columns because the backend does not resolve type metadata for them.
Loosen the filter to also include columns with a truthy expression,
so calculated columns (e.g. CASE statements mapping countries to
currency codes) appear in the dropdown.
---
.../DatasourceEditor/DatasourceEditor.jsx | 7 ++++++-
.../tests/DatasourceEditorCurrency.test.tsx | 22 ++++++++++++++++++++--
2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.jsx b/superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.jsx
index 242ab820a92..f37d3613686 100644
--- a/superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.jsx
+++ b/superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.jsx
@@ -1092,8 +1092,13 @@ class DatasourceEditor extends PureComponent {
}));
// Get string-type columns for the currency code dropdown
+ // Include calculated columns (identified by truthy expression) even when
+ // type_generic is unresolved, since the backend only populates type metadata
+ // for physical columns. Currency detection handles invalid codes gracefully.
const stringColumns = allColumns
- .filter(col => col.type_generic === GenericDataType.String)
+ .filter(
+ col => col.type_generic === GenericDataType.String || col.expression,
+ )
.map(col => ({
value: col.column_name,
label: col.verbose_name || col.column_name,
diff --git a/superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorCurrency.test.tsx b/superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorCurrency.test.tsx
index 445a47b087f..71f3bc002bd 100644
--- a/superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorCurrency.test.tsx
+++ b/superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorCurrency.test.tsx
@@ -138,7 +138,7 @@ test('changes currency symbol from USD to GBP', async () => {
expect(updatedMetric?.currency?.symbolPosition).toBe('prefix');
}, 60000);
-test('currency code column dropdown shows only string columns', async () => {
+test('currency code column dropdown shows string and calculated columns but excludes numeric columns', async () => {
const baseProps = createProps();
const testProps = {
...baseProps,
@@ -167,6 +167,18 @@ test('currency code column dropdown shows only string columns', async () => {
groupby: false,
column_name: 'amount',
},
+ {
+ id: 102,
+ type: null,
+ type_generic: null,
+ filterable: true,
+ is_dttm: false,
+ is_active: true,
+ expression:
+ "CASE WHEN country = 'US' THEN 'USD' ELSE 'EUR' END",
+ groupby: true,
+ column_name: 'derived_currency',
+ },
...baseProps.datasource.columns,
],
},
@@ -196,8 +208,14 @@ test('currency code column dropdown shows only string columns', async () => {
expect(currencyCodeOption).toBeDefined();
});
- // Verify NUMERIC column is NOT available
+ // Verify CALCULATED column is available despite null type_generic
const options = document.querySelectorAll('.ant-select-item-option');
+ const derivedCurrencyOption = Array.from(options).find(o =>
+ o.textContent?.includes('derived_currency'),
+ );
+ expect(derivedCurrencyOption).toBeDefined();
+
+ // Verify NUMERIC column is NOT available
const amountOption = Array.from(options).find(o =>
o.textContent?.includes('amount'),
);