Page stats avec nb de marchés par département close #21

This commit is contained in:
Colin Maudry
2025-06-13 13:17:40 +02:00
parent 859506c4aa
commit 01e714dba5
4 changed files with 49 additions and 27 deletions
+9
View File
@@ -1,8 +1,17 @@
import logging
import dash_bootstrap_components as dbc
from dash import Dash, dcc, html, page_container, page_registry
app = Dash(external_stylesheets=[dbc.themes.UNITED], title="decp.info", use_pages=True)
logger = logging.getLogger("decp.info")
logging.basicConfig(
format="%(asctime)s %(levelname)-8s %(message)s",
level=logging.INFO,
datefmt="%Y-%m-%d %H:%M:%S",
)
app.index_string = """
<!DOCTYPE html>
<html>
+2 -26
View File
@@ -1,45 +1,21 @@
import logging
import os
from datetime import datetime
from time import sleep
import polars as pl
from dash import Input, Output, State, callback, dash_table, dcc, html, register_page
from dotenv import load_dotenv
from polars.exceptions import ComputeError
from src.utils import (
add_annuaire_link,
booleans_to_strings,
df,
format_number,
logger,
numbers_to_strings,
split_filter_part,
)
logger = logging.getLogger("decp.info")
logging.basicConfig(
format="%(asctime)s %(levelname)-8s %(message)s",
level=logging.INFO,
datefmt="%Y-%m-%d %H:%M:%S",
)
load_dotenv()
# Chargement du fichier parquet
# Le fichier est chargé en mémoire, ce qui est plus rapide qu'une base de données pour le moment.
# On utilise polars pour la rapidité et la facilité de manipulation des données.
try:
logger.info(
f"Lecture du fichier parquet ({os.getenv('DATA_FILE_PARQUET_PATH')})..."
)
df: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
except ComputeError:
# Le fichier est probablement en cours de mise à jour
logger.info("Échec, nouvelle tentative dans 10s...")
sleep(seconds=10)
df: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
schema = df.schema
df_filtered = pl.DataFrame()
lf: pl.LazyFrame = df.lazy()
+36
View File
@@ -1,5 +1,13 @@
import logging
import os
from time import sleep
import polars as pl
import polars.selectors as cs
from dotenv import load_dotenv
from polars.exceptions import ComputeError
load_dotenv()
operators = [
["s<", "<"],
@@ -7,6 +15,13 @@ operators = [
["icontains", "contains"],
]
logger = logging.getLogger("decp.info")
logging.basicConfig(
format="%(asctime)s %(levelname)-8s %(message)s",
level=logging.INFO,
datefmt="%Y-%m-%d %H:%M:%S",
)
def split_filter_part(filter_part):
print("filter part", filter_part)
@@ -69,3 +84,24 @@ def numbers_to_strings(lf: pl.LazyFrame) -> pl.LazyFrame:
def format_number(number) -> str:
number = "{:,}".format(number).replace(",", " ")
return number
def get_decp_data() -> pl.DataFrame:
# Chargement du fichier parquet
# Le fichier est chargé en mémoire, ce qui est plus rapide qu'une base de données pour le moment.
# On utilise polars pour la rapidité et la facilité de manipulation des données.
try:
logger.info(
f"Lecture du fichier parquet ({os.getenv('DATA_FILE_PARQUET_PATH')})..."
)
ddf: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
except ComputeError:
# Le fichier est probablement en cours de mise à jour
logger.info("Échec, nouvelle tentative dans 10s...")
sleep(10)
ddf: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
return ddf
df = get_decp_data()