almost there

This commit is contained in:
Jake
2025-04-12 15:20:05 +01:00
parent c0b5e95d98
commit a79c245511
5 changed files with 46 additions and 30 deletions
+6 -1
View File
@@ -1,4 +1,5 @@
import polars as pl
from datetime import date, timedelta
accounts = pl.read_parquet('data/warehouse/accounts.parquet')
categories = pl.read_parquet('data/warehouse/categories.parquet')
@@ -52,4 +53,8 @@ spend_per_payee = master_transactions.sql('''
'''
)
print(spend_per_payee)
# print(spend_per_day)
today = date(date.today())
# Convert the dates to datetime objects that are compatible with Polars
start_date = pl.Date(today)
print(start_date)
+2
View File
@@ -35,6 +35,8 @@ def load_config():
except yaml.YAMLError as e:
logging.error(f'Error loading config.yaml: {e}')
sys.exit(ec.CORRUPTED_CONFIG_FILE)
except Exception as e:
logging.error(f'some other problem {e}')
logger = logging.getLogger("data_pipeline_for_ynab")
os.makedirs('logs', exist_ok=True)
+3 -5
View File
@@ -4,7 +4,7 @@ import pandas as pd
import logging
import sys
import config.exit_codes as ec
import datetime
# import datetime
try:
accounts = pl.read_parquet('data/warehouse/accounts.parquet')
@@ -30,9 +30,7 @@ except Exception as e:
def update_dates(start_date, end_date):
master_data = master_transactions.filter(
(pl.col('year') >= start_date.year ) & (pl.col('year') <= end_date.year) &
(pl.col('month') >= start_date.month ) & (pl.col('month') <= end_date.month) &
(pl.col('day') >= start_date.day ) & (pl.col('day') <= end_date.day)
pl.col("date").is_between(start_date, end_date)
)
return master_data
@@ -119,5 +117,5 @@ def update_data(master_data):
"spend_per_category_bar": spend_per_category_bar,
"spend_per_payee_bar": spend_per_payee_bar,
"total_spend": total_spend}
print(data)
return data
+10 -4
View File
@@ -1,21 +1,27 @@
'''Module to create a Dash app that displays visualizations of YNAB data.'''
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
from dash.dependencies import Input, Output, State
import dash_bootstrap_components as dbc
from visuals.layout import create_layout
from visuals.components import update_data, update_dates
from datetime import date
from datetime import date, timedelta
today = date.today()
one_year_ago = today - timedelta(days=365)
master_data = update_dates(start_date=date(2024, 1, 1), end_date=date(2026, 1, 1))
master_data = update_dates(start_date=one_year_ago, end_date=today)
data = update_data(master_data)
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.DARKLY])
@app.callback(
Output("layout-container", "children"),
Output("spend_per_day","figure"),
Output("spend_per_category","figure"),
Output("spend_per_payee","figure"),
Output("total_spend","children"),
[Input('date-picker-range', 'start_date'),
Input('date-picker-range', 'end_date')]
)
+11 -6
View File
@@ -1,6 +1,10 @@
from dash import html, dcc
from datetime import date
import dash_bootstrap_components as dbc
from datetime import date, timedelta
today = date.today()
one_year_ago = today - timedelta(days=365)
def create_layout(data):
@@ -18,8 +22,8 @@ def create_topbar():
dbc.Col(
dcc.DatePickerRange(
id="date-picker-range",
start_date=date(2024, 1, 1),
end_date=date(2026, 1, 1),
start_date=one_year_ago,
end_date=today,
),
width=4,
),
@@ -54,7 +58,7 @@ def create_main_body(data):
html.H4(
"Spend Per Day", className="card-title"
),
dcc.Graph(figure=data.spend_per_day_line),
dcc.Graph(figure=data['spend_per_day_line'],id='spend_per_day'),
]
),
className="mb-4",
@@ -72,7 +76,7 @@ def create_main_body(data):
html.H4(
"Spend Per Category", className="card-title"
),
dcc.Graph(figure=data.spend_per_category_bar),
dcc.Graph(figure=data['spend_per_category_bar'],id='spend_per_category'),
]
),
className="mb-4",
@@ -85,10 +89,11 @@ def create_main_body(data):
[
dcc.Markdown(f"""
## Total Spend:
### £{data.total_spend:,}
### £{data['total_spend']:,}
"""),
]
),
id='total_spend',
className="mb-4",
),
width=2,
@@ -100,7 +105,7 @@ def create_main_body(data):
html.H4(
"Spend Per Payee", className="card-title"
),
dcc.Graph(figure=data.spend_per_payee_bar),
dcc.Graph(figure=data['spend_per_payee_bar'],id='spend_per_payee'),
]
),
className="mb-4",