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 [chartType, setChartType] = useState('line');
const dateField: any = queryColumns?.find(
const dateField = queryColumns?.find(
(column: any) => column.showType === 'DATE' || column.type === 'DATE'
);
const dateColumnName = dateField?.bizName || '';
const categoryColumnName =
queryColumns?.find((column: any) => column.showType === 'CATEGORY')?.bizName || '';
let categoryColumnName =
queryColumns?.find((column: any) => column.showType === 'CATEGORY')?.bizName || '';
categoryColumnName = categoryColumnName === dateColumnName ? '' : categoryColumnName;
const metricFields = queryColumns?.filter((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} />
)}
<div className={`${prefixCls}-select-options`}>
<DateOptions
chatContext={chatContext}
currentDateOption={currentDateOption}
onSelectDateOption={onSelectDateOption}
/>
{/*<DateOptions*/}
{/* chatContext={chatContext}*/}
{/* currentDateOption={currentDateOption}*/}
{/* onSelectDateOption={onSelectDateOption}*/}
{/*/>*/}
<div>
<Select
defaultValue="line"

View File

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

View File

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