5 Commits

Author SHA1 Message Date
beat4ocean
9ff9acdee5 Merge c2adb3314d into a5051c7225 2025-03-14 01:56:02 +00:00
beat4ocean
c2adb3314d Merge branch 'tencentmusic:master' into master 2025-03-14 09:56:00 +08:00
williamhliu
a5051c7225 (improvement)(supersonic-fe) remove listColumnsBySql (#2173)
Some checks are pending
supersonic CentOS CI / build (21) (push) Waiting to run
supersonic mac CI / build (21) (push) Waiting to run
supersonic ubuntu CI / build (21) (push) Waiting to run
supersonic windows CI / build (21) (push) Waiting to run
2025-03-14 08:51:37 +08:00
beat4ocean
74f4732401 [fix][chat]Fix dashboard display issue when categoryColumnName and dateColumnName are identical.
(cherry picked from commit 738093bc88)
2025-03-13 13:57:19 +08:00
beat4ocean
2003c32c96 [Fix][Chat]Fix time granularity bug in model editing and dashboard display.
(cherry picked from commit b6d1525daa)
2025-03-13 13:57:18 +08:00
4 changed files with 40 additions and 47 deletions

View File

@@ -48,12 +48,13 @@ const MetricTrend: React.FC<Props> = ({
const { queryColumns, queryResults, aggregateInfo, entityInfo, chatContext } = data; const { queryColumns, queryResults, aggregateInfo, entityInfo, chatContext } = data;
const [chartType, setChartType] = useState('line'); const [chartType, setChartType] = useState('line');
const dateField: any = queryColumns?.find( const dateField = queryColumns?.find(
(column: any) => column.showType === 'DATE' || column.type === 'DATE' (column: any) => column.showType === 'DATE' || column.type === 'DATE'
); );
const dateColumnName = dateField?.bizName || ''; const dateColumnName = dateField?.bizName || '';
const categoryColumnName = let categoryColumnName =
queryColumns?.find((column: any) => column.showType === 'CATEGORY')?.bizName || ''; queryColumns?.find((column: any) => column.showType === 'CATEGORY')?.bizName || '';
categoryColumnName = categoryColumnName === dateColumnName ? '' : categoryColumnName;
const metricFields = queryColumns?.filter((column: any) => column.showType === 'NUMBER'); const metricFields = queryColumns?.filter((column: any) => column.showType === 'NUMBER');
const currentMetricField = queryColumns?.find((column: any) => column.showType === 'NUMBER'); const currentMetricField = queryColumns?.find((column: any) => column.showType === 'NUMBER');
@@ -80,11 +81,11 @@ const MetricTrend: React.FC<Props> = ({
<MetricInfo aggregateInfo={aggregateInfo} currentMetricField={currentMetricField} /> <MetricInfo aggregateInfo={aggregateInfo} currentMetricField={currentMetricField} />
)} )}
<div className={`${prefixCls}-select-options`}> <div className={`${prefixCls}-select-options`}>
<DateOptions {/*<DateOptions*/}
chatContext={chatContext} {/* chatContext={chatContext}*/}
currentDateOption={currentDateOption} {/* currentDateOption={currentDateOption}*/}
onSelectDateOption={onSelectDateOption} {/* onSelectDateOption={onSelectDateOption}*/}
/> {/*/>*/}
<div> <div>
<Select <Select
defaultValue="line" defaultValue="line"

View File

@@ -8,7 +8,7 @@ import { ISemantic } from '../../data';
import { import {
AGG_OPTIONS, AGG_OPTIONS,
DATE_FORMATTER, DATE_FORMATTER,
DATE_OPTIONS, // DATE_OPTIONS,
DIM_OPTIONS, DIM_OPTIONS,
EnumDataSourceType, EnumDataSourceType,
EnumModelDataType, EnumModelDataType,
@@ -275,7 +275,7 @@ const ModelFieldForm: React.FC<Props> = ({
} }
} }
if ([EnumDataSourceType.TIME, EnumDataSourceType.PARTITION_TIME].includes(type)) { if ([EnumDataSourceType.TIME, EnumDataSourceType.PARTITION_TIME].includes(type)) {
const { dateFormat, timeGranularity } = record; const { dateFormat } = record;
const dateFormatterOptions = const dateFormatterOptions =
type === EnumDataSourceType.PARTITION_TIME ? PARTITION_TIME_FORMATTER : DATE_FORMATTER; type === EnumDataSourceType.PARTITION_TIME ? PARTITION_TIME_FORMATTER : DATE_FORMATTER;
@@ -302,25 +302,25 @@ const ModelFieldForm: React.FC<Props> = ({
<ExclamationCircleOutlined /> <ExclamationCircleOutlined />
</Tooltip> </Tooltip>
</Space> </Space>
<Space> {/*<Space>*/}
<span>:</span> {/* <span>时间粒度:</span>*/}
<Select {/* <Select*/}
placeholder="时间粒度" {/* placeholder="时间粒度"*/}
value={timeGranularity === '' ? undefined : timeGranularity} {/* value={timeGranularity === '' ? undefined : timeGranularity}*/}
onChange={(value) => { {/* onChange={(value) => {*/}
handleFieldChange(record, 'timeGranularity', value); {/* handleFieldChange(record, 'timeGranularity', value);*/}
}} {/* }}*/}
defaultValue={timeGranularity === '' ? undefined : DATE_OPTIONS[0]} {/* defaultValue={timeGranularity === '' ? undefined : DATE_OPTIONS[0]}*/}
style={{ minWidth: 180 }} {/* style={{ minWidth: 180 }}*/}
allowClear {/* allowClear*/}
> {/* >*/}
{DATE_OPTIONS.map((item) => ( {/* {DATE_OPTIONS.map((item) => (*/}
<Option key={item} value={item}> {/* <Option key={item} value={item}>*/}
{item} {/* {item}*/}
</Option> {/* </Option>*/}
))} {/* ))}*/}
</Select> {/* </Select>*/}
</Space> {/*</Space>*/}
</Space> </Space>
); );
} }

View File

@@ -18,7 +18,7 @@ import { isFunction } from 'lodash';
import FullScreen from '@/components/FullScreen'; import FullScreen from '@/components/FullScreen';
import SqlEditor from '@/components/SqlEditor'; import SqlEditor from '@/components/SqlEditor';
import type { TaskResultItem, TaskResultColumn } from '../data'; import type { TaskResultItem, TaskResultColumn } from '../data';
import { executeSql, listColumnsBySql } from '@/pages/SemanticModel/service'; import { executeSql } from '@/pages/SemanticModel/service';
import SqlParams from './SqlParams'; import SqlParams from './SqlParams';
import styles from '../style.less'; import styles from '../style.less';
@@ -248,19 +248,12 @@ const SqlDetail: React.FC<IProps> = ({
id: currentDatabaseItem.key, id: currentDatabaseItem.key,
sqlVariables: sqlParams, sqlVariables: sqlParams,
}); });
const { code: getColumnCode, data: getColumnData } = await listColumnsBySql({
sql: value,
databaseId: currentDatabaseItem.key,
});
setResultTableLoading(false); setResultTableLoading(false);
if (code === 200 && getColumnCode === 200) { if (code === 200) {
const columnData = getColumnData.map((item) => { const columnData = (data.columns || []).map((item: any) => {
return { return {
...item, ...item,
nameEn: item.columnName, columnName: item.nameEn,
type: item.dataType,
}; };
}); });
fetchTaskResult(data, columnData); fetchTaskResult(data, columnData);

View File

@@ -373,12 +373,6 @@ export async function executeSql(params: ExcuteSqlParams) {
return request.post(`${process.env.API_BASE_URL}database/executeSql`, { data }); return request.post(`${process.env.API_BASE_URL}database/executeSql`, { data });
} }
export async function listColumnsBySql(data: { databaseId: number; sql: string }) {
return request.post(`${process.env.API_BASE_URL}database/listColumnsBySql`, {
data,
});
}
export function getCatalogs(dbId: number): Promise<any> { export function getCatalogs(dbId: number): Promise<any> {
return request(`${process.env.API_BASE_URL}database/getCatalogs`, { return request(`${process.env.API_BASE_URL}database/getCatalogs`, {
method: 'GET', method: 'GET',
@@ -409,7 +403,12 @@ export function getTables(databaseId: number, catalog: string, dbName: string):
}); });
} }
export function getColumns(databaseId: number, catalog: string, dbName: string, tableName: string): Promise<any> { export function getColumns(
databaseId: number,
catalog: string,
dbName: string,
tableName: string,
): Promise<any> {
return request(`${process.env.API_BASE_URL}database/getColumnsByName`, { return request(`${process.env.API_BASE_URL}database/getColumnsByName`, {
method: 'GET', method: 'GET',
params: { params: {