Reports
Los reports te permiten armar tablas, grupos y charts sobre cualquier entidad — Accounts, Opportunities, Cases, lo que tengas. Cuatro formatos primarios:
- Chart — visualización agregada (bar, line, pie, KPI, counter). Útil para dashboards.
- Tabular — lista plana de records con columnas configurables. Tu ~70% de uso real.
- Summary — records agrupados por un field, con subtotales por grupo y total general.
- Matrix — pivot table 2D (rows × columns × cell aggregation). Próximamente (v3).
Cualquier formato puede tener un chart encima opcionalmente.
Los reports se organizan en carpetas con permisos granulares — por permission set o por usuario individual, con cascade opcional a subcarpetas. Ver Sharing y permisos abajo.
Encontrar Reports
Reports aparece automáticamente en el dropdown de entities/tabs del workspace (al lado del logo, arriba). Si alguno de tus permission sets te da view_reports, lo ves sin que un admin lo configure. Click → se abre como una tab.
Tu admin también puede pinearlo como tab fija (Configuración → Constructor de app → Tabs → Nueva → Reports) para que esté siempre visible para todo el tenant.
Crear un report
- Abrí Reports (dropdown del workspace o
/reports). - Click + New report.
- Se abre un modal pidiéndote la entidad principal (Accounts, Opportunities, etc.) — el reporte va a analizar esa entidad.
- Click Continuar → se abre el builder full-bleed.
Builder
Tres zonas:
- Configure (izquierda) — la query. Las secciones son colapsables (click el título) para que puedas concentrarte en lo que estás editando.
- Live preview (centro) — se actualiza solo (debounce 500ms) cada vez que cambiás algo.
- Inspector (derecha) — name, description, engine info.
Format
Lo primero a elegir. Cambiar el format reorganiza las secciones del sidebar:
- Chart: solo el chart agregado. Group by + aggregation + visualization picker.
- Tabular: lista plana de records. Vos elegís las columnas (multi-select), sort por columna, paginación, total al pie.
- Summary: records agrupados por un field, cada grupo expandible con subtotales (count, sum, etc.) y un grand total al final. Soporta hasta 5 aggregations en columnas separadas.
- Matrix: disponible en v3.
Si elegís Tabular o Summary, el builder ofrece el toggle “Chart on top”; hoy se guarda pero el visor todavía no dibuja el chart encima (pendiente).
Filters
Agregá condiciones con AND/OR visuales (ConditionBuilder). Operadores: equals, contains, greater than, less than, between, is empty, etc. La lógica se mantiene visible: cards anidadas con borde coloreado (azul = AND, violeta = OR).
Group by + Aggregation
- Group by — una dimensión (
industrypara Accounts,stagepara Opportunities, etc.). - Aggregation —
Count/Sum/Avg/Min/Max.Count + all recordscuenta todo; con un field cuenta los que tienen valor no-null.
En Summary podés agregar hasta 5 aggregations (chips + “Add aggregation”), cada una con su fn + field + alias. Cada aggregation se renderiza como una columna en el grupo.
Visualization (chart format)
- Bar — clásico para “X by category”.
- Line — series temporales. Pide
dateField+interval(day/week/month) +periods. - Pie — proporciones.
- KPI — número grande con cambio % vs período anterior. Pide
comparePeriod. - Counter — solo el número.
Columnas (Tabular / Summary)
Multi-check picker. Solo las columnas que pickeás se muestran — id, created_at y updated_at ya no aparecen automáticamente como antes. Si las querés, marcalas explícitamente.
Guardar
Click Save. La primera vez se abre un dialog que confirma:
- Name — display name (libre).
- API name — slug interno usado en URLs (ej.
pipeline_by_stage). Auto-derivado del name hasta que lo edités. - Description — opcional.
- Folder — picker tree con todas las carpetas accesibles. Solo seleccionables las que tenés permiso de Editor; las demás se ven grises. Default: tu carpeta privada (
My Private Reports) o la carpeta donde estabas en el list.
Después del save, te lleva al viewer.
Ver un report
El viewer abre como una tab del workspace (/reports/:id):
- Header: nombre, descripción, badges (Shared/Private + tipo de viz).
- Topbar: Refresh · Export · Share · Edit · botón ⋯ con Move-to-folder y Delete.
- Filter chips removibles arriba del chart, con
AND/ORy paréntesis intercalados para que veas exactamente la expresión que se está evaluando. - Chart / tabla / summary, según el format.
- Footer: muestra qué motor lo corrió (Pro o Standard) y cuánto tardó.
Frescura de datos
Si tu workspace tiene Pro Analytics, los reports tipo chart corren sobre una réplica analítica con un lag de segundos. Vas a ver un badge “hace N seg” cuando aplique. Refrescar trae los últimos datos.
Tabular y Summary corren siempre contra la base principal (datos al día, sin lag). El badge Pro / Standard refleja el tier del workspace, independientemente de qué motor ejecutó cada consulta.
Monedas
Si el workspace trabaja en multi-moneda, toda suma o promedio de un campo de dinero se convierte a la moneda corporativa con las cotizaciones vigentes, y el visor lo avisa con una nota cuando mezcló monedas. Sin moneda corporativa configurada, los totales mezclan monedas y la nota te lo advierte. Ver Monedas.
Drilldown
Click en una barra del chart (o cualquier sector pickleable) → side panel desde la derecha con los records subyacentes de ese grupo. Click en un record → record detail. Hasta 100 records mostrados (configurable hasta 200).
Filtros ad-hoc en el viewer
Remové chips para explorar variaciones sin volver al builder. “Reset to saved filters” te trae los filtros originales. Los cambios ad-hoc no se guardan — si querés persistir, click Edit y andá al builder.
Exportar a CSV
Click Export en el viewer. CSV con header row + hasta 100,000 filas (sin truncation a 2K como Salesforce). id y created_at siempre incluidos para trazabilidad. Si tu report es Tabular, exporta exactamente las columnas configuradas.
Mover un report a otra carpeta
En el list (cards o tabla) click el menú ⋯ del report → Move to…. O desde el viewer, mismo menú ⋯. Se abre un picker con todas las carpetas accesibles — solo podés seleccionar carpetas donde tenés Editor.
Embed en App Pages y Record Pages
Los reports guardados se embeben como cards:
- Abrí un App Page o un Record Page con el Page Builder.
- En la palette izquierda, sección Data viz, drag “Report” al canvas.
- En el properties panel (derecha): pickeá el report, opcional override del título, ajustá la altura del card (default 360px).
- Save.
El embed muestra el chart con un header que linkea al viewer completo. Soporta refresh manual y mantiene el badge “as of N ago” si aplica.
Limitación actual: los embeds solo soportan format
chart. Reports tipo Tabular o Summary muestran un mensaje “open the report directly to view it” — el render embebido para esos formats viene en una próxima iteración.
Carpetas (Folders)
Los reports viven en carpetas. Cada carpeta tiene su propia ACL — podés dar acceso a un permission set completo o a un usuario individual con dos niveles:
- Viewer — puede entrar a la carpeta y correr los reports adentro.
- Editor — todo lo de Viewer, más crear / editar / borrar reports en la carpeta, crear subcarpetas, y editar la ACL de esa carpeta.
Carpetas de sistema
Cada tenant tiene dos carpetas que no se pueden borrar ni renombrar:
- Public — root, todos los users con
view_reportsla ven y leen los reports adentro. Crear adentro requiere Editor (lo otorga un sysadmin via grant explícito omanage_reports). - My Private Reports — una por usuario. Solo el dueño la ve. Crear / editar reports adentro es automático.
Subcarpetas anidadas
Las carpetas pueden anidarse (/Sales/Q1 2026/Won deals). El acceso se resuelve por intersección: para entrar a una subcarpeta necesitás permiso en cada carpeta ancestral del path. Si perdés acceso a una carpeta padre, perdés todo lo que cuelga abajo.
Herencia
Por default los grants cascadean a las subcarpetas. Si una subcarpeta tiene su propia ACL definida, esa ACL reemplaza la heredada (no se suman) — útil cuando querés restringir el acceso de una subcarpeta específica sin afectar las hermanas.
Validate Access
En el ACL editor de cualquier carpeta, cada user tiene un botón “Validate Access” que te dice si ese user efectivamente puede llegar a esa carpeta caminando todo el path desde root. Si está bloqueado, te muestra exactamente en qué carpeta ancestral está el problema. Útil cuando le diste acceso a un user a una carpeta profunda y olvidaste darle acceso a un padre.
Crear y administrar carpetas
- Crear root folder — requiere el system permission
manage_report_folders. Click el ícono📁+arriba del sidebar tree en/reports. - Crear subcarpeta — requiere Editor en el parent. Hover la carpeta padre en el sidebar → click
+. - Renombrar / Compartir / Eliminar — hover la carpeta → click
⋯. System folders no muestran este menú (no son editables). - Borrar — solo si la carpeta está vacía (sin subcarpetas ni reports adentro). Mové o eliminá el contenido primero.
Sharing y permisos
System permissions:
view_reports— pre-requisito básico para usar Reports. Sin esto no aparece en el dropdown del workspace.manage_reports— sysadmin override completo. Puede crear/editar/borrar cualquier report y carpeta sin importar las ACLs.manage_report_folders— autoriza crear root folders. Subcarpetas no requieren este permission (basta con Editor en el parent).
Adicional: para correr un report tenés que poder leer la entidad del report. Si tu permission set no te deja ver Opportunities, no podés ejecutar un report sobre Opportunities aunque alguien lo haya compartido en una carpeta donde sos Editor. Esto cierra el hueco de “Run as another user” de SF.
Tiers — Standard vs Pro Analytics
| Standard | Pro Analytics | |
|---|---|---|
| Sweet spot | Hasta ~5M records por entidad | 100M+ records, 10-100× más rápido en agregaciones |
| Frescura | Datos al día (consistencia inmediata) | Lag de 1-10 segundos (réplica analítica) en charts |
| Limites | 5M rows escaneadas, 30s timeout | 100M rows, 60s timeout |
| Activación | Default | Es una capacidad del plan del workspace que habilita Nxar; el cambio aplica al instante |
UX idéntico. Diferencias visibles:
- Pro: badge “as of N seconds ago” cuando el query corrió en CH (charts grandes con groupBy/agg).
- Standard: si superás el límite, banner sugiriendo upgrade.
Tips
Para que tus reports sean rápidos, pedile al admin que marque ciertos campos como Campo promovido (analytics) (Configuración → Constructor de app → Entidades → (entidad) → Campos → editar el campo). Acelera filtros y group-by sobre ese campo. Hasta 5 por entidad es lo recomendado — candidatos típicos: etapa, estado, prioridad, industria, dueño.
Para reports que se actualizan seguido, configurá un dashboard (App Page) que los embeba — el card tiene su propio refresh y su badge de frescura.
Para análisis ad-hoc, usá el viewer con filter chips: probá distintos filtros sin guardar nada hasta que encuentres la vista que querés persistir.
Para no llenar de reports compartidos: arrancá guardando todo en My Private Reports. Cuando uno esté maduro, movelo a una carpeta compartida con Move-to-folder.
Si un report es lento, revisá:
- ¿Tiene
groupByyaggregation? Las queries simples sin agregación a veces son más lentas porque escanean rows individuales en vez de agregados. - ¿Los campos del filtro están promovidos? Si filtrás por un campo no indexado en datasets de millones, va a ser lento en Standard.
- ¿Cuántos rows escanea? Mirá el footer del viewer —
durationMste da la métrica real.
Limitaciones actuales
- Matrix (pivot 2D) todavía no está disponible: aparece deshabilitado en el selector de formato.
- Los embeds en páginas solo soportan el formato chart; Tabular y Summary se abren desde el visor.
- El toggle “Chart on top” de Tabular/Summary se guarda pero no se dibuja todavía.
- No hay columnas calculadas, formato condicional, reportes programados por email, export XLSX, reportes entre entidades ni historial de ejecuciones.