diff --git a/components/Main.tsx b/components/Main.tsx index f9ed014..4d8cb9f 100644 --- a/components/Main.tsx +++ b/components/Main.tsx @@ -318,21 +318,10 @@ export default function Main() { df = pd.json_normalize(js_data.to_py()) if "__index_level_0__" in df.columns: - df = df.drop(columns=["__index_level_0__"]) + df = df.drop(columns=["__index_level_0__"]) if not preview: - df = df.pivot_table(index=[${rows - .map((row) => `'${row.name}'`) - .toString()}], - columns=[${columns - .map((column) => `'${column.name}'`) - .toString()}], - values='${aggregation.name}', - aggfunc='${ - aggregation.type?.toLowerCase() === "avg" - ? "mean" - : aggregation.type?.toLowerCase() - }'); + df = ${getPivotCode()} def format_excel_sheet(writer, df, sheet_name='Pivot Table'): df.to_excel(writer, sheet_name=sheet_name) @@ -406,6 +395,28 @@ export default function Main() { } }; + const getPivotCode = () => { + if ( + !preview && + aggregation.name && + (rows.length > 0 || columns.length > 0) + ) { + return `df.pivot_table(index=[${rows + .map((row) => `'${row.name}'`) + .toString()}], + columns=[${columns + .map((column) => `'${column.name}'`) + .toString()}], + values='${aggregation.name}', + aggfunc='${ + aggregation.type?.toLowerCase() === "avg" + ? "mean" + : aggregation.type?.toLowerCase() + }')`; + } + return null; + }; + const hasRelationships = useMemo( () => files.every((file) => @@ -463,20 +474,38 @@ export default function Main() { )} {sqlQuery && ( - + <> + + {!preview && getPivotCode() && ( + + )} + )}