mirror of
https://github.com/tencentmusic/supersonic.git
synced 2026-04-30 04:54:25 +08:00
Compare commits
5 Commits
c6e10b71de
...
9ff9acdee5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ff9acdee5 | ||
|
|
c2adb3314d | ||
|
|
a5051c7225 | ||
|
|
74f4732401 | ||
|
|
2003c32c96 |
@@ -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"
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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: {
|
||||||
|
|||||||
Reference in New Issue
Block a user