| | import dash |
| | from dash import html |
| | import duckdb |
| | import os |
| |
|
| | |
| | CENSO_PATH = "./data/censo_manzanas_optimizado.gpq" |
| |
|
| | |
| | |
| | app = dash.Dash(__name__) |
| | |
| | server = app.server |
| |
|
| | |
| | |
| | def get_total_manzanas(): |
| | """ |
| | Realiza una consulta simple para contar el total de filas en el archivo GeoParquet. |
| | """ |
| | if not os.path.exists(CENSO_PATH): |
| | return "Error: No se encontró el archivo de datos. Asegúrate de que exista en ./data/" |
| |
|
| | try: |
| | con = duckdb.connect(database=':memory:') |
| | |
| | con.install_extension("spatial") |
| | con.load_extension("spatial") |
| | |
| | query = f"SELECT COUNT(*) FROM read_parquet('{CENSO_PATH}');" |
| | result = con.execute(query).fetchdf().iloc[0, 0] |
| | con.close() |
| | return f"¡Éxito! El contenedor Docker y DuckDB funcionan. Total de manzanas leídas: {result}" |
| | except Exception as e: |
| | return f"Error durante la consulta de DuckDB: {e}" |
| |
|
| | |
| | |
| | app.layout = html.Div(style={'textAlign': 'center', 'fontFamily': 'Arial'}, children=[ |
| | html.H1("Prueba de Despliegue: Dash + DuckDB en Hugging Face Spaces"), |
| | html.Hr(), |
| | html.H2("Resultado de la consulta de prueba:"), |
| | html.P( |
| | id='query-result', |
| | children=get_total_manzanas(), |
| | style={'fontSize': '20px', 'color': 'green' if 'Éxito' in get_total_manzanas() else 'red'} |
| | ) |
| | ]) |
| |
|
| | |
| | if __name__ == '__main__': |
| | |
| | |
| | app.run_server(debug=True) |
| |
|