329 lines
18 KiB
Markdown
329 lines
18 KiB
Markdown
# Documentación de la base de datos **MarmotechBI**
|
||
### Guía para el desarrollo de dashboards en Power BI
|
||
|
||
| | |
|
||
|---|---|
|
||
| **Servidor** | `192.168.40.8` (SQL Server 2016) |
|
||
| **Base de datos** | `MarmotechBI` |
|
||
| **Origen de los datos** | Se actualiza en vivo desde los sistemas operativos de la empresa |
|
||
| **Naturaleza** | Capa semántica de **vistas** (54 vistas + 2 tablas). No almacena datos propios salvo 2 tablas de carga manual |
|
||
| **Propósito** | Esquema estrella para que usuarios de negocio armen sus propios dashboards con nombres de negocio |
|
||
| **Fecha de este documento** | 2026-08-25 |
|
||
|
||
> **Idea clave:** casi todo en `MarmotechBI` es una **vista** que presenta la información con nombres de negocio (`vwFactVentas`, `vwDimProducto`, etc.). Como son vistas, **no existen llaves foráneas físicas**: las relaciones son *lógicas* y hay que **crearlas manualmente en Power BI** (ver la sección [Relaciones para Power BI](#relaciones-recomendadas-en-power-bi)).
|
||
|
||
---
|
||
|
||
## 1. Cómo conectarse desde Power BI
|
||
|
||
1. **Obtener datos → SQL Server**.
|
||
2. Servidor: `192.168.40.8` · Base de datos: `MarmotechBI`.
|
||
3. Modo: **Import** (recomendado para tableros publicados) o **DirectQuery** si se necesita tiempo real.
|
||
4. Seleccionar las vistas del área que se va a analizar (ej. `vwFactVentas` + sus dimensiones `vwDim*`).
|
||
5. En la vista **Modelo**, crear las relaciones según la sección 6.
|
||
|
||
> **Permisos:** el acceso es por login de Windows con rol de lectura (`db_datareader`) sobre `MarmotechBI`. Solicitarlo a Tecnología con el usuario de dominio.
|
||
|
||
---
|
||
|
||
## 2. Convenciones de nombres
|
||
|
||
| Prefijo | Significado | Rol en el modelo |
|
||
|---|---|---|
|
||
| `vwDim…` | **Dimensión** — describe (quién, qué, dónde, cuándo) | Tabla de "look up" |
|
||
| `vwFact…` / `VWFACT…` | **Hecho** — mide (cuánto, cuántos) | Tabla central de valores |
|
||
| `vwBridge…` | **Puente** — resuelve relaciones muchos-a-muchos | Entre dimensiones |
|
||
| `VW_DIM_…` / `VW_HECHOS_…` | Esquema del **Balanced Scorecard / Indicadores** (área independiente) | Dim / Hecho de gestión |
|
||
| Sin prefijo (`ventas_facturas`, `estadoResultado`, `item_conteo_ciclico`…) | **Vistas planas de reporte** — ya vienen denormalizadas | Se usan solas, no requieren relaciones |
|
||
| `…_usuario` (`_cdelacruz`, `_jisa`, `_mpuig`…) | **Copias personales** filtradas por vendedor/supervisor | Uso individual, no para el modelo general |
|
||
|
||
**Claves compuestas** — se repiten en casi todo el modelo:
|
||
|
||
- **Producto** = `cod_n` + `cod_grupo` + `cod_tipo` + `cod_sec` (4 columnas). En `vwDimProducto` existe también `producto_id` que las concatena como texto (`cod_n-cod_grupo-cod_tipo-cod_sec`).
|
||
- **Cliente** = `tipo_cliente` + `sec_cliente` (2 columnas).
|
||
|
||
---
|
||
|
||
## 3. Áreas temáticas (subject areas)
|
||
|
||
| # | Área | Hecho(s) principal(es) | Dimensiones que usa |
|
||
|---|---|---|---|
|
||
| A | **Comercial / Ventas** | `vwFactVentas`, `VWFACTCOTIZACIONES`, `vwfactPipeline`, `vwFactPresupuesto` | Fecha, Cliente, Vendedor, EquipoVentas, Producto, Categoría, Provincia, Zona, TipoVenta |
|
||
| B | **Cuentas por Cobrar** | `vwFactCxC_Base`, `vwFactCxC_Real` | Cliente, Vendedor, TipoVenta |
|
||
| C | **Despacho / Pendientes** | `vwOrdenesPendientesDespacho`, `vwReqCotizaciones`, `vwProductoDisponible` | Cliente, Vendedor, Producto |
|
||
| D | **Producción** | `vwProduccion_pub` | DepartamentoProducción, Producto |
|
||
| E | **Contabilidad / Finanzas** | `vwFactContabilidad`, `estadoResultado` | (Departamento, Cuenta — internas) |
|
||
| F | **Inventario** | `vwRotacionInventario_pub`, `vwRotacionInventarioPorBodega_pub`, `item_conteo_ciclico` | (planas, autocontenidas) |
|
||
| G | **Indicadores / Balanced Scorecard** | `VW_HECHOS_INDICADORES`, `VW_HECHOS_DOWNTIME`, `VW_HECHOS_TICKETS` | Calendario, Departamentos, Indicadores, Perspectivas, Procesos |
|
||
| H | **Datos externos** (tabla física) | `FactMercadoEdificaciones` | (independiente) |
|
||
|
||
---
|
||
|
||
## 4. Diccionario de dimensiones (área comercial)
|
||
|
||
### `vwDimFecha` — Calendario (grano mensual)
|
||
Grano = mes.
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `ano` | smallint | Año |
|
||
| `numeroMes` | smallint | Número de mes (1-12) — **llave para ordenar** |
|
||
| `mes` | char(10) | Nombre del mes |
|
||
| `AnoMes` | varchar(7) | `AAAA-MM` |
|
||
|
||
### `vwDimCliente` — Clientes · PK = `tipo_cliente` + `sec_cliente`
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `tipo_cliente` | smallint | Tipo/segmento de cliente (parte 1 de la llave) |
|
||
| `sec_cliente` | int | Secuencia del cliente (parte 2 de la llave) |
|
||
| `nombre` | char(100) | Razón social |
|
||
| `num_rnc` | char(25) | RNC/Cédula |
|
||
| `direccion` | varchar(173) | Dirección |
|
||
|
||
### `vwDimVendedor` — Vendedores · PK = `vendedor_id`
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `vendedor_id` | smallint | Código de vendedor (corresponde al nº de empleado) |
|
||
| `vendedor` | varchar(31) | Nombre y apellido |
|
||
| `equipo_id` | smallint | **FK → `vwDimEquipoVentas.equipo_id`** |
|
||
|
||
### `vwDimEquipoVentas` — Equipos de venta · PK = `equipo_id`
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `equipo_id` | smallint | Código del equipo/departamento comercial |
|
||
| `equipoVentas` | nchar(200) | Nombre del equipo |
|
||
|
||
### `vwDimProducto` — Productos · PK = `cod_n`+`cod_grupo`+`cod_tipo`+`cod_sec`
|
||
**Es la dimensión central de producto de todo el modelo.**
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `cod_n`, `cod_grupo`, `cod_tipo`, `cod_sec` | int | Llave compuesta del producto |
|
||
| `producto_id` | varchar(43) | Llave concatenada (`cod_n-cod_grupo-cod_tipo-cod_sec`) — **usar esta para relacionar en Power BI** |
|
||
| `descripcion_producto` | varchar(180) | Nombre del producto |
|
||
| `unidad_med` | char(4) | Unidad de medida |
|
||
| `clase` / `grupo` / `tipo` | char/nvarchar | Jerarquía de clasificación |
|
||
| `origen` | char(20) | Origen (nacional/importado/producción) |
|
||
| `categoria_titulo` | varchar(100) | Categoría comercial |
|
||
| `GerenteMarcas` | varchar(31) | Gerente de marca responsable |
|
||
|
||
### `vwDimCategoria` — Categorías comerciales · PK = `cod_categoria`
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `cod_categoria` | smallint | Código de categoría |
|
||
| `categoria` | varchar(100) | Nombre de la categoría |
|
||
|
||
### `vwBridgeProductoCategoria` — Puente Producto ↔ Categoría
|
||
Resuelve que un producto (por `cod_n`+`cod_grupo`+`cod_tipo`) pertenece a una categoría.
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `cod_n`, `cod_grupo`, `cod_tipo` | smallint | Parte de la llave del producto |
|
||
| `cod_categoria` | smallint | **FK → `vwDimCategoria.cod_categoria`** |
|
||
|
||
### `vwDimProvincia` — Provincias · PK = `cod_provincia`
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `cod_provincia` | smallint | Código de provincia |
|
||
| `nombre_provincia` | char(30) | Nombre |
|
||
| `pais` | nchar(20) | País |
|
||
| `idZona` | smallint | **FK → `vwDimZona.cod_zona`** |
|
||
|
||
### `vwDimZona` — Zonas geográficas · PK = `cod_zona`
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `cod_zona` | smallint | Código de zona |
|
||
| `zonaGeografica` | char(30) | Nombre de la zona |
|
||
|
||
### `vwDimTipoVenta` — Tipo de venta / Moneda · PK = `ventas`
|
||
Contiene la **tasa de cambio** usada para convertir a RD$.
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `ventas` | smallint | Código de tipo de venta |
|
||
| `descripcion` | nvarchar(80) | Descripción |
|
||
| `simbolo` | nvarchar(40) | Símbolo de moneda |
|
||
| `descripcion_moneda` | nchar(40) | Moneda |
|
||
| `tasa` | decimal | Tasa de cambio a RD$ |
|
||
| `tipo_operacion` | varchar(11) | `LOCAL_RD` / `LOCAL_USD` / `EXPORTACION` / `EURO` / `OTRO` |
|
||
|
||
### `vwDimDepartamentoProduccion` — Departamentos de producción · PK = `codigodepto`
|
||
| Columna | Tipo | Descripción |
|
||
|---|---|---|
|
||
| `codigodepto` | smallint | Código de departamento |
|
||
| `nombre_depto` | char(30) | Nombre |
|
||
| `tipo_departamento` | nchar(40) | Tipo |
|
||
| `proceso_agrupado` | varchar(13) | Agrupación de proceso |
|
||
|
||
---
|
||
|
||
## 5. Diccionario de hechos (measures)
|
||
|
||
### `vwFactVentas` — Ventas facturadas · grano: **línea de factura**
|
||
Una fila por cada línea de factura. Solo incluye documentos activos (no anulados).
|
||
| Columna | Tipo | Rol | Descripción |
|
||
|---|---|---|---|
|
||
| `factura`, `sucid` | int | Grano | Nº de factura + sucursal |
|
||
| `fecha`, `ano`, `mes` | date/int | → Fecha | Fecha de factura |
|
||
| `tipo_cliente`, `sec_cliente` | — | → Cliente | Llave del cliente |
|
||
| `vendedor` | smallint | → Vendedor | `sec_vend` (código del vendedor) |
|
||
| `ventas` | — | → TipoVenta | Código de moneda/tipo venta |
|
||
| `tipoVenta`, `simbolo`, `tasa` | — | Atributo | Descripción de moneda y tasa |
|
||
| `cod_provincia` | — | → Provincia | Provincia del cliente |
|
||
| `cotizacion_no` | int | → Cotización | Cotización que originó la venta |
|
||
| `cod_n`,`cod_grupo`,`cod_tipo`,`cod_sec` | — | → Producto | Llave del producto |
|
||
| `cantidad` | numeric | Medida | Cantidad vendida |
|
||
| `precio` | numeric | Medida | Precio unitario |
|
||
| `porc_desc` | numeric | Medida | % de descuento |
|
||
| `valor_bruto` | numeric | Medida | cantidad × precio |
|
||
| `valor_descuento` | numeric | Medida | Monto del descuento |
|
||
| `neto` | numeric | Medida | Neto en moneda original |
|
||
| **`neto_rd`** | numeric | Medida | **Neto convertido a RD$ (neto × tasa)** — usar para totales |
|
||
|
||
### `VWFACTCOTIZACIONES` — Cotizaciones · grano: línea de cotización
|
||
Llaves: `cotizacion_no`, `tipo_cliente`+`sec_cliente`, `vendedor_id`, `cod_zona`, `cod_provincia`, `cod_n…cod_sec`.
|
||
Medidas: `cantidad`, `precio`, `porc_desc`, `neto_rd`, `monto_bruto`, `monto_descuento`, `estado`.
|
||
|
||
### `vwfactPipeline` — Embudo comercial (cotizado → vendido → despachado) · grano: cotización
|
||
Medidas: `cotizado_rd`, `vendido_rd`, `pendiente_venta_rd`, `conversion_pct`, `despachado_rd`, `pendiente_despacho_rd`.
|
||
Llaves: `cotizacion_no`, `tipo_cliente`+`sec_cliente`, `vendedor`, `cod_zona`, `cod_provincia`, `ventas`.
|
||
|
||
### `vwFactPresupuesto` — Presupuesto/meta de ventas
|
||
Llaves: `ano`,`mes`, `vendedor`, `ventas`, `cod_n…cod_sec`, `cod_categoria`.
|
||
Medidas: `cantidad`, `valor`, `valor_rd`.
|
||
|
||
### `vwFactCxC_Base` — Movimientos de Cuentas por Cobrar
|
||
Llaves: `tipo_cliente`+`sec_cliente`, `vendedor`, `num_doc`, `tipo_doc`, `ventas`.
|
||
Medidas: `monto`, `monto_rd`, `monto_signado`, `monto_signado_rd`, `dias_vencimiento`, `tipo_movimiento`.
|
||
|
||
### `vwFactCxC_Real` — Balance vigente de CxC por factura
|
||
Llaves: `tipo_cliente`+`sec_cliente`, `vendedor`, `factura`, `ventas`.
|
||
Medidas: `balance_rd`, `dias_vencimiento`.
|
||
|
||
### `vwProductoDisponible` — Disponibilidad de inventario (snapshot)
|
||
Disponibilidad calculada con la misma lógica del sistema operativo de inventario. Llave: `producto_id` / `cod_n…cod_sec`.
|
||
Medidas: `existencia`, `ordenes_abiertas`, `despachado`, `reservado`, `transito`, **`disponible`** (= existencia − (ordenes_abiertas − despachado) − reservado).
|
||
|
||
### `vwOrdenesPendientesDespacho` — Órdenes pendientes de despacho
|
||
Llaves: `cotizacion_no`, `tipo_cliente`+`sec_cliente`, `vendedor_id`, `cod_n…cod_sec`.
|
||
Medidas: `cantidadCotizada`, `cantidadDespachada`, `cantidadPendiente`, `valorCotizadoLinea`.
|
||
|
||
### `vwReqCotizaciones` — Requisiciones vs. cotizaciones
|
||
Medidas: `cantidadCotizada`, `cantidadDespachada`, `cantidadPendiente`, `valorRequisicion`, `valorPendienteDespachar`.
|
||
|
||
### `vwProduccion_pub` — Producción diaria · grano: producto/día
|
||
Llaves: `codigodepto` → DepartamentoProducción, `cod_n…cod_sec` → Producto.
|
||
Medidas: `unidades`, `cantidad`, `existencia`, `cantidadVendida`.
|
||
|
||
### `vwFactContabilidad` — Movimientos contables
|
||
Llaves: `cuenta`, `codigodepartamento`, `ano`, `mes`, `tipo`, `banco`.
|
||
Medidas: `debito`, `credito`, `balance`, `presupuesto`. Incluye auditoría (`usuariocreador`, `fechacreacion`…).
|
||
|
||
---
|
||
|
||
## 6. Relaciones recomendadas en Power BI
|
||
|
||
> Como son vistas, **Power BI no detecta relaciones automáticamente**. Créalas a mano en la vista *Modelo*, con cardinalidad **Dimensión (1) → Hecho (\*)** y filtro en **dirección única**.
|
||
|
||
### 6.1 Área comercial (estrella)
|
||
|
||
| Dimensión (lado 1) | Columna | Hecho (lado \*) | Columna |
|
||
|---|---|---|---|
|
||
| `vwDimFecha` | `AnoMes` | `vwFactVentas` / cotizaciones / pipeline | `AnoMes` derivado de `ano`+`mes` |
|
||
| `vwDimCliente` | *clave compuesta* | `vwFactVentas`, `VWFACTCOTIZACIONES`, CxC | `tipo_cliente` + `sec_cliente` |
|
||
| `vwDimVendedor` | `vendedor_id` | `vwFactVentas` (`vendedor`), cotizaciones (`vendedor_id`) | vendedor |
|
||
| `vwDimEquipoVentas` | `equipo_id` | `vwDimVendedor` | `equipo_id` |
|
||
| `vwDimProducto` | `producto_id` | hechos con `cod_n…cod_sec` | *clave compuesta* |
|
||
| `vwDimCategoria` | `cod_categoria` | `vwBridgeProductoCategoria` | `cod_categoria` |
|
||
| `vwBridgeProductoCategoria` | `cod_n`+`cod_grupo`+`cod_tipo` | `vwDimProducto` | mismas columnas |
|
||
| `vwDimProvincia` | `cod_provincia` | `vwFactVentas`, cotizaciones, pipeline | `cod_provincia` |
|
||
| `vwDimZona` | `cod_zona` | `vwDimProvincia` | `idZona` |
|
||
| `vwDimTipoVenta` | `ventas` | hechos con `ventas` | `ventas` |
|
||
|
||
### 6.2 Claves compuestas — cómo resolverlas
|
||
|
||
Power BI **solo permite relaciones por UNA columna**. Para `Cliente` y `Producto` (llaves de 2 y 4 columnas) crea una **columna llave concatenada** con la misma fórmula en la dimensión y en el hecho:
|
||
|
||
```
|
||
// Cliente — en vwDimCliente y en cada hecho:
|
||
ClienteKey = FORMAT([tipo_cliente],"00") & "-" & FORMAT([sec_cliente],"0000000")
|
||
|
||
// Producto — usar el producto_id que ya trae vwDimProducto; en los hechos:
|
||
ProductoKey = FORMAT([cod_n],"0") & "-" & FORMAT([cod_grupo],"0") & "-" & FORMAT([cod_tipo],"0") & "-" & FORMAT([cod_sec],"0")
|
||
```
|
||
Luego relaciona por `ClienteKey` / `ProductoKey`.
|
||
|
||
### 6.3 Fechas
|
||
Los hechos traen `ano` + `mes`/`numeroMes` (grano mensual). Recomendado:
|
||
- Crear una **tabla de calendario** en Power BI (`CALENDAR`/`CALENDARAUTO`) y una columna `AnoMes` en cada hecho para relacionar; **o**
|
||
- Reutilizar `VW_DIM_CALENDARIO` (grano diario) como calendario compartido cuando se cruce con Indicadores.
|
||
|
||
### 6.4 Moneda
|
||
Los valores `*_rd` **ya vienen convertidos a RD$** usando la `tasa` de `vwDimTipoVenta`. Para totales monetarios usar siempre las columnas `neto_rd`, `monto_rd`, `valor_rd`, `balance_rd`.
|
||
|
||
---
|
||
|
||
## 7. Área de Indicadores / Balanced Scorecard (esquema `VW_*`)
|
||
|
||
Modelo estrella independiente para el tablero de gestión (indicadores, tiempos de caída, tickets de soporte).
|
||
|
||
**Dimensiones**
|
||
| Vista | PK | Descripción |
|
||
|---|---|---|
|
||
| `VW_DIM_CALENDARIO` | `Fecha` | Calendario diario (Año, Mes, Trimestre, Semana, EsFinDeSemana) |
|
||
| `VW_DIM_DEPARTAMENTOS` | `IdDepartamento` | Departamentos (Nombre, Tipo, Responsable, Activo) |
|
||
| `VW_DIM_INDICADORES` | `IdIndicador` | Indicadores (Meta, Peso, Frecuencia, UnidadMedida; FK `IdDepartamento`) |
|
||
| `VW_DIM_PERSPECTIVAS` | `IdPerspectiva` | Perspectivas del BSC (Financiera, Cliente, Procesos, Aprendizaje) |
|
||
| `VW_DIM_PROCESOS` | `IdProceso` | Procesos (Área, Criticidad, Tipo; FK `IdDepartamento`) |
|
||
|
||
**Hechos**
|
||
| Vista | Llaves | Medidas |
|
||
|---|---|---|
|
||
| `VW_HECHOS_INDICADORES` | `IdIndicador`, `Fecha`, `IdPerspectiva` | `ValorReal`, `ValorMeta`, `Cumplimiento`, `Score` |
|
||
| `VW_HECHOS_DOWNTIME` | `Fecha`, `IdDepartamento`, `IdProceso` | `HorasCaidas`, `ImpactoEstimado` |
|
||
| `VW_HECHOS_TICKETS` | `Fecha`, `IdProceso`, `IdDepartamento` | `HorasResolucion`, conteos por `status`/`priority`/`category` |
|
||
| `VW_SCORE_DEPARTAMENTO` | (derivada) | `ScorePromedio` por Departamento/Año/Mes |
|
||
|
||
**Relaciones**
|
||
- `VW_DIM_INDICADORES[IdIndicador]` → `VW_HECHOS_INDICADORES[IdIndicador]`
|
||
- `VW_DIM_PERSPECTIVAS[IdPerspectiva]` → `VW_HECHOS_INDICADORES[IdPerspectiva]`
|
||
- `VW_DIM_CALENDARIO[Fecha]` → `VW_HECHOS_INDICADORES / DOWNTIME / TICKETS[Fecha]`
|
||
- `VW_DIM_DEPARTAMENTOS[IdDepartamento]` → `VW_DIM_INDICADORES / VW_DIM_PROCESOS / hechos[IdDepartamento]`
|
||
- `VW_DIM_PROCESOS[IdProceso]` → `VW_HECHOS_DOWNTIME / VW_HECHOS_TICKETS[IdProceso]`
|
||
|
||
---
|
||
|
||
## 8. Tablas físicas (carga manual)
|
||
|
||
| Tabla | Contenido | Notas |
|
||
|---|---|---|
|
||
| `FactMercadoEdificaciones` | Datos de mercado de la construcción (municipio, barrio, tipo de destino, m² construidos, unidades, precio/m², situación del mercado, fuente) | Se carga con datos externos (ej. estadísticas de edificaciones) |
|
||
|
||
---
|
||
|
||
## 9. Vistas planas y personales (uso directo, fuera del modelo estrella)
|
||
|
||
Estas vistas **ya vienen denormalizadas** (traen las descripciones incorporadas): se conectan solas, sin relaciones.
|
||
|
||
| Vista | Uso |
|
||
|---|---|
|
||
| `ventas_facturas` | Vista completa de ventas con cliente, vendedor, producto, zona, moneda ya resueltos — ideal para una tabla dinámica rápida |
|
||
| `vwRotacionInventario_pub` / `vwRotacionInventarioPorBodega_pub` | Rotación de inventario (global / por bodega): cantidad vendida, valor ventas, `rotacion` |
|
||
| `item_conteo_ciclico` | Programación de conteo cíclico por clase ABC |
|
||
| `estadoResultado` | Estado de resultados por mes (`aplica_a`, `Balance`) |
|
||
| `vwProduccion_pub` | Producción diaria en formato plano |
|
||
| `analisisCotizaciones`, `analisisRequisiciones` | Análisis de cotizaciones y requisiciones (unidades/valores cotizados vs. despachados) |
|
||
|
||
**Copias personales (filtradas por vendedor/supervisor)** — *no usar para el modelo corporativo*:
|
||
`analisisCotizaciones_cdelacruz`, `_jefrancisco`, `_jisa`, `_mhurtado`, `_mpuig`, `_mvargas`;
|
||
`analisisRequisiciones_cdelacruz`, `_jefrancisco`, `_JISA`, `_mhurtado`, `_mpuig`;
|
||
`vwreportesfactura_cdelacruz`, `_jisa`, `_mpuig`;
|
||
`vwDimProductoMariaAna` (copia de `vwDimProducto`).
|
||
|
||
---
|
||
|
||
## 10. Buenas prácticas para el equipo de dashboards
|
||
|
||
1. **Un modelo por área** — no mezclar el esquema comercial con el de Indicadores en un mismo reporte salvo que se comparta el calendario.
|
||
2. **Usar siempre las columnas `*_rd`** para importes; la conversión de moneda ya está hecha.
|
||
3. **Dimensión en el lado 1, hecho en el lado \*** y filtro cruzado **unidireccional** (evita ambigüedad).
|
||
4. **Crear medidas DAX** (SUM, DISTINCTCOUNT…) en lugar de arrastrar columnas numéricas directamente.
|
||
5. **No apuntar a las vistas `_usuario`** para tableros compartidos; usar la vista base y filtrar con seguridad a nivel de fila (RLS) si se requiere segmentar por vendedor.
|
||
6. Ante dudas sobre el significado de una columna, consultar a Tecnología.
|