Modelo de datos
Edalitics permite crear un modelo de datos lógico a partir del cual los usuarios pueden crear informes de forma sencilla e intuitiva. Un usuario administrador puede generar modelos de datos. Para ello, debe configurar una conexión de base de datos y asignarle un nombre:
Una vez proporcionados los datos de conexión, EDA generará automáticamente un modelo lógico. Generando:
- Entidades de las tablas y atributos de las columnas.
- Relaciones entre las diferentes tablas a partir de columnas con el mismo nombre y formato id (campos que contienen id_, o fk_, o code, o nk_)
- Si activamos la opción “Optimizar Consultas”, también tendremos estadísticas sobre el tamaño de las tablas que se usarán para asesorar al usuario al crear informes, evitando consultas pesadas innecesarias.
Generar un modelo lógico enriquecido con nombres y descripciones que permitirá al usuario de negocio comprender perfectamente el contenido del modelo de datos.
Para generar un modelo de datos solo es necesario tener los datos de conexión a la base de datos:
- Nombre de la conexión
- Tipo de conexión (MySql, PostgreSQL, Oracle, SqlServer, Snowflake, Vertica, etc.)
- Servidor
- Nombre de la base de datos
- Esquema (si corresponde)
- Usuario
- Contraseña
- Filtro: Permite especificar las tablas que desea incluir en el modelo concatenando los elementos tabla_a, tabla_b, tabla_c o utilizando patrones sql eda_%
Los modelos de datos se pueden enriquecer con:
- Vistas a nivel de modelo: Permite definir vistas a nivel de modelo lógico que se comportan como nuevas tablas. Esto es especialmente recomendable cuando se tienen consultas complejas que se utilizan repetidamente. Una vista se puede definir a nivel de modelo lógico. Cómo agregar una vista
- Generación de entidades desde un archivo CSV: Diseñado para entornos dinámicos. Se puede generar una nueva entidad en el modelo a partir de un archivo CSV de datos. Esta funcionalidad carga los datos CSV en una tabla de la base de datos. Esta funcionalidad solo está habilitada con modelos definidos con PostgreSQL. Cómo subir un csv
- Campos calculados: Puede agregar un campo calculado a una tabla para realizar operaciones. Si desea generar un campo numérico, debe incluir la agregación que desea realizar. Cómo agregar un campo calculado También puedes ver el vídeo: https://youtu.be/UT9d6EOpLO0
- Mapas: se pueden cargar archivos Geojson y vincularlos a uno (o varios) atributos para que se puedan generar mapas de capas vinculados a esos atributos.
Los modelos de datos se pueden proteger a nivel de datos, lo que permite definir la seguridad a nivel de registro. La seguridad se aplica al usuario de la sesión.
Los modelos de datos determinan si las consultas contra ese modelo almacenarán en caché los datos y durante cuánto tiempo estará vigente ese almacenamiento en caché.
Video tutorial
Sección titulada «Video tutorial»Personaliza el modelo
Sección titulada «Personaliza el modelo»edalitics genera el modelo de datos automáticamente. Esto es solo una ayuda. El modelo de datos se puede personalizar:
- Ocultar mesas
- Ocultar columnas técnicas que no tienen que aparecer en el modelo
- Cambiar los nombres de tablas o columnas
- Generando descripciones significativas
- Crear o eliminar relaciones entre tablas
- Cómo agregar columnas calculadas cómo agregar un campo calculado
- Definir listas de valores posibles
Modelo de datos de EDA
Sección titulada «Modelo de datos de EDA»A continuación se muestra un modelo de datos EDA:
{ "_id": "XXXX", // Model's id "ds": { "connection": { "database": "mydb", // Database name "host": "127.0.0.1", // Database server "password": "xxxx", // Database password "poolLimit": 10, // In case you want to activate pool the number of concurrent connections (only with mysql) "port": 3306, "schema": "", "searchPath": "", "sid": 1, "type": "mysql",// Database type. Possible values: 'postgres', 'mysql', 'vertica', 'sqlserver', 'oracle', 'bigquery', 'snowflake', 'jsonwebservice' "user": "myuser", "warehouse": "" // For Snowflake }, "metadata": { "cache_config": { // Cache configuration "enabled": false, "hours": "06", "minutes": "00", "quantity": 1, "units": "days" }, "filter": "", "model_granted_roles": [ // Security configuration { "column": "fullModel", "global": true, "none": false, "permission": true, "table": "fullModel", "type": "anyoneCanSee", "users": [ "(~ => All)" ], "usersName": [ "(~ => All)" ] } ], "model_id": "", "model_name": "edalitics MODEL", "optimized": false, "external" : {} },
"model": { "maps": [ ], // Maps Configuration "tables": [ // Tables list { "table_name": "table_a", // Database's table name "table_type": [], "display_name": { "default": "Table A Description", // Name of the table that the user will see "localized": [ ] }, "description": { "default": "Table A description ", // Description of the table that the user will see "localized": [ ] },
"tableCount": 0, // Number of records in the table. It is used for optimizations. "visible": true, // Determines whether the table is visible to the user or has a technical function "columns": [ // List of table columns { "aggregation_type": [ // Possible column aggregations { "display_name": "Cuenta Valores", // Name that the user will see "value": "count" // Aggregation type }, { "display_name": "Valores Distintos", "value": "count_distinct" }, { "display_name": "No", "value": "none" } ], "column_granted_roles": [ ], "column_name": "id", // Table column name "column_type": "numeric", // Column type. Possible values are numeric, text, date, coordinate "display_name": { "default": "Columna con el id", // Name of the column that the user will see "localized": [ ] }, "description": { "default": "Columna con el id de la tabla ",// Description of the column that the user will see "localized": [ ] }, "minimumFractionDigits": 0, // Number of decimal places the user will see on the front-end "row_granted_roles": [ ], "tableCount": 0, "valueListSource": { // In case the column is an id pointing to a value list }, "visible": true // Determines whether the user sees the column (true) or whether it is hidden or hidden (false) } ], "no_relations": [], "relations": [ // Table relationships. What other tables is it related to and how? { "display_name": { "default": "Relation Name", // Name to display for the relationship "localized": [ ] }, "source_column": [ // Origin column(s) "id" ], "source_table": "table_a", // Source table "target_column": [ // Destination column(s) "id" ], "target_table": "table_b", // Destination table "visible": true // Whether it is visible, active or not. } ]
},
{ "table_name": "table_b", "table_type": [], "description": { "default": "Table B Name", "localized": [ ] }, "display_name": { "default": "Table B Description", "localized": [ ] }, "tableCount": 0, "visible": true, "columns": [ { "aggregation_type": [ { "display_name": "Cuenta Valores", "value": "count" }, { "display_name": "Valores Distintos", "value": "count_distinct" }, { "display_name": "No", "value": "none" } ], "column_granted_roles": [ ], "column_name": "id", "column_type": "numeric", "description": { "default": "ID", "localized": [ ] }, "display_name": { "default": "ID", "localized": [ ] }, "hidden": 0, "minimumFractionDigits": 0, "row_granted_roles": [ ], "tableCount": 0, "valueListSource": { }, "visible": true } ], "no_relations": [], "relations": [ { "bridge": false, "display_name": { "default": "Relation Name", "localized": [ ] }, "source_column": [ "id" ], "source_table": "table_b", "target_column": [ "id" ], "target_table": "table_a", "visible": true } ]
} ] } }}
