mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-25 13:06:53 +00:00
Fix data dashboard - data_loader.py (#1526)
This commit is contained in:
parent
a78e35c384
commit
d9a60f9628
@ -19,41 +19,62 @@ class DashboardDataLoader:
|
|||||||
|
|
||||||
def get_chart_values_by_data(self, field_names, datas, chart_sql: str):
|
def get_chart_values_by_data(self, field_names, datas, chart_sql: str):
|
||||||
logger.info(f"get_chart_values_by_conn:{chart_sql}")
|
logger.info(f"get_chart_values_by_conn:{chart_sql}")
|
||||||
try:
|
# try:
|
||||||
values: List[ValueItem] = []
|
values: List[ValueItem] = []
|
||||||
data_map = {}
|
data_map = {}
|
||||||
field_map = {}
|
|
||||||
index = 0
|
|
||||||
for field_name in field_names:
|
|
||||||
data_map.update({f"{field_name}": [row[index] for row in datas]})
|
|
||||||
index += 1
|
|
||||||
if not data_map[field_name]:
|
|
||||||
field_map.update({f"{field_name}": False})
|
|
||||||
else:
|
|
||||||
field_map.update(
|
|
||||||
{
|
|
||||||
f"{field_name}": all(
|
|
||||||
isinstance(item, (int, float, Decimal))
|
|
||||||
for item in data_map[field_name]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
for field_name in field_names[1:]:
|
data_map.update(
|
||||||
if not field_map[field_name]:
|
{
|
||||||
logger.info("More than 2 non-numeric column:" + field_name)
|
f"{field_name}": [row[index] for row in datas]
|
||||||
else:
|
for index, field_name in enumerate(field_names)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
# to Check Whether there are data in it
|
||||||
|
if len(datas) != 0:
|
||||||
|
# find the first string column
|
||||||
|
str_index = next(
|
||||||
|
(
|
||||||
|
index
|
||||||
|
for index, value in enumerate(datas[0])
|
||||||
|
if isinstance(value, str)
|
||||||
|
),
|
||||||
|
1,
|
||||||
|
)
|
||||||
|
if type(datas[0][str_index]) == str:
|
||||||
|
tempFieldName = field_names[:str_index]
|
||||||
|
tempFieldName.extend(field_names[str_index + 1 :])
|
||||||
|
for field_name in tempFieldName:
|
||||||
for data in datas:
|
for data in datas:
|
||||||
value_item = ValueItem(
|
# None Data won't be ok for the chart
|
||||||
name=data[0],
|
if not any(item is None for item in data):
|
||||||
type=field_name,
|
value_item = ValueItem(
|
||||||
value=str(data[field_names.index(field_name)]),
|
name=data[str_index],
|
||||||
)
|
type=field_name,
|
||||||
values.append(value_item)
|
value=str(data[field_names.index(field_name)]),
|
||||||
|
)
|
||||||
|
values.append(value_item)
|
||||||
|
else:
|
||||||
|
value_item = ValueItem(
|
||||||
|
name=data[str_index],
|
||||||
|
type=field_name,
|
||||||
|
value="0",
|
||||||
|
)
|
||||||
|
values.append(value_item)
|
||||||
|
else:
|
||||||
|
result = [sum(values) for values in zip(*datas)]
|
||||||
|
for index, field_name in enumerate(field_names):
|
||||||
|
value_item = ValueItem(
|
||||||
|
name=field_name,
|
||||||
|
type=f"{field_name}_count",
|
||||||
|
value=str(result[index]),
|
||||||
|
)
|
||||||
|
values.append(value_item)
|
||||||
return field_names, values
|
return field_names, values
|
||||||
except Exception as e:
|
else:
|
||||||
logger.debug("Prepare Chart Data Failed!" + str(e))
|
return field_names, [
|
||||||
raise ValueError("Prepare Chart Data Failed!")
|
ValueItem(name=f"{field_name}", type=f"{field_name}", value="0")
|
||||||
|
for index, field_name in enumerate(field_names)
|
||||||
|
]
|
||||||
|
|
||||||
def get_chart_values_by_db(self, db_name: str, chart_sql: str):
|
def get_chart_values_by_db(self, db_name: str, chart_sql: str):
|
||||||
logger.info(f"get_chart_values_by_db:{db_name},{chart_sql}")
|
logger.info(f"get_chart_values_by_db:{db_name},{chart_sql}")
|
||||||
|
Loading…
Reference in New Issue
Block a user