Skip to content

Commit 43e82da

Browse files
committed
feat: output results as table
1 parent 45f6747 commit 43e82da

3 files changed

Lines changed: 37 additions & 4 deletions

File tree

cbc.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ entrypoints:
4242
query_information_DB_TABLE: null
4343
description: A table containing information about the executed query
4444
type: database_table
45+
query_result_as_table:
46+
config:
47+
query_result_as_table_DB_DSN: null
48+
query_result_as_table_DB_SCHEMA: null
49+
query_result_as_table_DB_TABLE: null
50+
description: A table containing the queries result
51+
type: database_table
4552
run_query_from_string:
4653
description: Run the query directly by passing an SQL Query
4754
envs:
@@ -74,3 +81,10 @@ entrypoints:
7481
query_information_DB_TABLE: null
7582
description: A table containing information about the executed query
7683
type: database_table
84+
query_result_as_table:
85+
config:
86+
query_result_as_table_DB_DSN: null
87+
query_result_as_table_DB_SCHEMA: null
88+
query_result_as_table_DB_TABLE: null
89+
description: A table containing the queries result
90+
type: database_table

interactions/query.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
import logging
22
import sys
33

4+
import pandas as pd
5+
46
from scystream.sdk.database_handling.database_manager import (
57
PandasDatabaseOperations,
68
)
79

810

911
def execute_query_to_csv(
1012
query: str, dsn: str, output_file: str, schema: str | None
11-
) -> None:
13+
) -> pd.DataFrame:
1214
try:
1315
db = PandasDatabaseOperations(dsn, schema)
1416
df = db.read(query=query)
1517
df.to_csv(output_file, index=False)
18+
return df
1619
except Exception as e:
1720
logging.error(f"Database query failed: {e}")
1821
sys.exit(1)

main.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,22 +64,30 @@ class QueryInformationOutput(DatabaseSettings, OutputSettings):
6464
DB_SOURCE_DESCRIPTION: str | None
6565

6666

67+
class QueryResultAsTable(DatabaseSettings, OutputSettings):
68+
__identifier__ = "query_result_as_table"
69+
70+
6771
class QueryDatabaseFromFileEntrypointSettings(EnvSettings):
6872
DB_DSN: str
6973
DB_SCHEMA: str | None = None
7074

7175
query_file: QueryFileInput
76+
7277
csv_output: CSVOutput
7378
query_information: QueryInformationOutput
79+
query_result_as_table: QueryResultAsTable
7480

7581

7682
class QueryDatabaseEntrypointSettings(EnvSettings):
7783
DB_DSN: str
7884
DB_SCHEMA: str | None = None
7985

8086
query_str: QueryStrInput
87+
8188
csv_output: CSVOutput
8289
query_information: QueryInformationOutput
90+
query_result_as_table: QueryResultAsTable
8391

8492

8593
def write_query_info(query: str, source: str, settings: DatabaseSettings):
@@ -92,15 +100,22 @@ def write_query_info(query: str, source: str, settings: DatabaseSettings):
92100
db.write(table=settings.DB_TABLE, data=df, mode="overwrite")
93101

94102

95-
@entrypoint(QueryDatabaseEntrypointSettings)
103+
def write_df_to_table(df: pd.DataFrame, settings: DatabaseSettings) -> None:
104+
db = PandasDatabaseOperations(settings.DB_DSN, settings.DB_SCHEMA)
105+
106+
db.write(table=settings.DB_TABLE, data=df, mode="overwrite")
107+
108+
109+
# @entrypoint(QueryDatabaseEntrypointSettings)
96110
def run_query_from_string(settings):
97111
target_csv = "output.csv"
98-
execute_query_to_csv(
112+
df = execute_query_to_csv(
99113
query=settings.query_str.QUERY,
100114
dsn=settings.DB_DSN,
101115
output_file=target_csv,
102116
schema=settings.DB_SCHEMA,
103117
)
118+
write_df_to_table(df, settings.query_result_as_table)
104119
upload_to_s3(target_csv, settings.csv_output)
105120
write_query_info(
106121
query=settings.query_str.QUERY,
@@ -122,12 +137,13 @@ def run_query_from_file(settings):
122137
query = read_query_file(local_file)
123138
target_csv = "output.csv"
124139

125-
execute_query_to_csv(
140+
df = execute_query_to_csv(
126141
query=query,
127142
dsn=settings.DB_DSN,
128143
output_file=target_csv,
129144
schema=settings.DB_SCHEMA,
130145
)
146+
write_df_to_table(df, settings.query_result_as_table)
131147
upload_to_s3(target_csv, settings.csv_output)
132148
write_query_info(
133149
query=query,

0 commit comments

Comments
 (0)