Przejdź do głównej zawartości

Model danych

Edalitics umożliwia tworzenie logicznego modelu danych, na podstawie którego użytkownicy mogą w prosty i intuicyjny sposób tworzyć raporty. Użytkownik administrator może generować modele danych. Aby wygenerować model danych, administrator musi skonfigurować połączenie z bazą danych i nadać mu nazwę:

Po podaniu danych połączenia EDA automatycznie wygeneruje model logiczny. Generując:

  • Encje z tabel i atrybuty z kolumn.
  • Relacje między poszczególnymi tabelami na podstawie kolumn o tej samej nazwie i formacie id (pola zawierające id_, fk_, code lub nk_)
  • Jeśli zaznaczymy opcję “Optymalizuj zapytania”, otrzymamy również statystyki dotyczące rozmiaru tabel, które będą wykorzystywane do doradzania użytkownikowi podczas tworzenia raportów. Zapobiega to niepotrzebnym, ciężkim zapytaniom.

Wygenerowanie modelu logicznego wzbogaconego o nazwy i opisy pozwoli użytkownikowi biznesowemu doskonale zrozumieć zawartość modelu danych.

Aby wygenerować model danych, wystarczą dane połączenia z bazą danych:

  • Nazwa połączenia
  • Typ połączenia (MySql, PostgreSQL, Oracle, SqlServer, Snowflake, Vertica itd.)
  • Serwer
  • Nazwa bazy danych
  • Schemat (jeśli dotyczy)
  • Użytkownik
  • Hasło
  • Filtr: Pozwala określić tabele, które mają zostać uwzględnione w modelu, poprzez łączenie elementów tabela_a, tabela_b, tabela_c lub użycie wzorców sql eda_%

Modele danych można wzbogacić o:

  • Widoki na poziomie modelu: Możliwość definiowania widoków na poziomie modelu logicznego, które zachowują się jak nowe tabele. Jest to szczególnie zalecane, gdy mamy do czynienia ze złożonymi zapytaniami, które są używane wielokrotnie. Widok można zdefiniować na poziomie modelu logicznego. Jak dodać widok
  • Generowanie encji z pliku csv: Zaprojektowane dla środowisk dynamicznych. Nową encję w modelu można wygenerować z pliku csv z danymi. Ta funkcjonalność wczytuje dane csv do tabeli w bazie danych. Ta funkcjonalność jest dostępna wyłącznie dla modeli zdefiniowanych z Postgresql. Jak wgrać plik csv
  • Pola obliczeniowe: Możesz dodać pole obliczeniowe do tabeli, co pozwala na wykonywanie operacji. Jeśli chcesz wygenerować pole liczbowe, musisz uwzględnić agregację, którą chcesz wykonać. Jak dodać pole obliczeniowe Możesz również obejrzeć wideo: https://youtu.be/UT9d6EOpLO0
  • Mapy: Można przesyłać pliki Geojson i łączyć je z jednym (lub kilkoma) atrybutami, dzięki czemu można generować mapy warstwowe powiązane z tymi atrybutami.

Modele danych można zabezpieczyć na poziomie danych, co pozwala na zdefiniowanie bezpieczeństwa na poziomie rekordu. Bezpieczeństwo jest stosowane wobec użytkownika sesji.

Modele danych określają, czy zapytania do danego modelu będą buforować dane w pamięci podręcznej (cache) i przez jak długi czas ten cache będzie obowiązywał.

edalitics generuje model danych automatycznie. Jest to jednak tylko pomoc. Model danych można dostosować:

  • Ukrywając tabele
  • Ukrywając kolumny techniczne, które nie powinny pojawiać się w modelu
  • Zmieniając nazwy tabel lub kolumn
  • Generując znaczące opisy
  • Tworząc lub usuwając relacje między tabelami
  • Dodając kolumny obliczeniowe Jak dodać pole obliczeniowe
  • Definiując listy możliwych wartości

Poniżej przedstawiono model danych edalitics

{
"_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
}
]
}
]
}
}
}