Caso práctico: Analytic Model apilado con variables en Datasphere
Paso a paso para reutilizar un Analytic Model como fuente de otro en SAP Datasphere: Inherit, Map To y Set Value, variables renombradas y validación.

Índice del artículo
En casi todos los proyectos con SAP Datasphere acaba pasando lo mismo: el equipo central publica un Analytic Model de ventas bien hecho y, a las pocas semanas, cada área pide “el suyo” con un par de medidas más y sin las variables que no entiende. Si cada área copia el modelo, en seis meses tienes cinco versiones de la misma lógica. En este caso práctico construimos la alternativa: un Analytic Model derivado que usa el modelo central como fuente y personaliza sus variables, algo que SAP completó en mayo de 2026.
Qué vamos a construir
Al acabar tendrás:
- Un Analytic Model base,
AM_SALES_CORE, sobre la vista FactFV_SALES, con dos variables:P_FISCAL_YEAR(ejercicio) yP_DATA_CATEGORY(real, presupuesto…). - Un Analytic Model derivado,
AM_SALES_RETAIL, que usaAM_SALES_COREcomo fuente y:- mapea el ejercicio a una variable propia,
P_REPORT_YEAR, con otro nombre de negocio y otro valor por defecto; - fija la categoría de datos a
ACT(real), para que el usuario de retail no vea esa pregunta; - añade sus propias medidas: ventas del canal retail y su peso sobre el total.
- mapea el ejercicio a una variable propia,
- Una validación que demuestra que los dos modelos devuelven lo mismo cuando reciben los mismos valores.
Para que puedas reproducirlo tal cual, el caso parte de un CSV de ejemplo con datos ficticios: T_SALES_ITEMS.csv (1.890 filas, 90 KB). Tiene los ejercicios 2025 completo y 2026 hasta el periodo 9, tres sociedades (ES01, PT01, FR01), tres canales (RETAIL, ONLINE, WHOLESALE), cinco productos y las categorías ACT (real) y BUD (presupuesto), todo en euros.
La portada resume el montaje. Todos los nombres técnicos (FV_SALES, AM_SALES_CORE, CHANNEL…) son de ejemplo: usa los de tu convención.
Por qué merece la pena
Viniendo de BW, piensa en una query que reutiliza una estructura global: la lógica vive en un sitio y quien consume solo añade lo suyo. Antes de este cambio, al apilar modelos las variables del modelo base venían “tal cual”: o las heredabas con su nombre y su valor por defecto, o las resolvías con un valor fijo. Si el área de retail quería que el ejercicio se llamase de otra forma, o que arrancase en otro año, tocaba copiar el modelo entero.
Ahora tienes tres opciones por cada variable del modelo fuente, y elegir bien es la mitad del caso:
| Opción | Qué pasa | Cuándo la uso |
|---|---|---|
| Inherit | Se usan las propiedades de la variable del modelo base. No se puede cambiar en el derivado | Variables “de empresa” que deben comportarse igual en todos los modelos |
| Set Value | Resuelves la variable con un valor. El usuario del modelo derivado ya no la ve | Filtros que definen el propio modelo (solo real, solo una sociedad) |
| Map To | La variable pasa a una variable del modelo nuevo, que sí puedes renombrar y ajustar | Variables que el área necesita ver con su nombre, su default o en sus medidas |
Paso a paso
Paso:Importa el CSV de ejemplo como tabla local
Descarga T_SALES_ITEMS.csv. En el Data Builder elige Import → Import CSV File, selecciona el archivo con Select Source File y pulsa Upload. Se abre el editor de importación con la vista previa de los datos.
El editor solo maneja tipos genéricos (String, Integer, Number, Date…). Selecciona una columna y abre la pestaña Details para ver el suyo. Aquí solo hay que tocar una cosa: Datasphere infiere
FISCAL_YEARcomo Integer, así que cámbialo a String. El ejercicio va como texto porque el parámetro de entradaIP_FISCAL_YEARtambién lo es. Comprueba de paso queNET_REVENUEaparece como Number. Pulsa Deploy y dejaT_SALES_ITEMScomo nombre de negocio y técnico.
Editor de importación: vista previa de los datos y, en la pestaña Details, la columna NET_REVENUE como Number. La precisión no se elige en la importación. La tabla se crea con tipos muy holgados:
String(5000),Integer64yDecimal(38,19). Para ajustarlos, abre la tabla, ve a la pestaña Columns, haz clic en el tipo de la columna y vuelve a desplegar. Yo los dejaría así:Columna Tipo tras importar Tipo ajustado FISCAL_YEARString(5000) String(4) FISCAL_PERIOD,QUANTITYInteger64 Integer64 COMPANY_CODE,CHANNEL,PRODUCT_ID,DATA_CATEGORY,CURRENCYString(5000) String(5000) NET_REVENUEDecimal(38,19) Decimal(15,2) Lo importante es que el importe quede como decimal exacto y no como coma flotante: SAP avisa de que los valores
hana.REALse convierten (1.1 pasa a 1.100000023841858) y luego no cuadran al céntimo.Si prefieres usar tus propios datos, sáltate este paso y adapta los nombres de columna en el siguiente.
Paso:Prepara la vista Fact con parámetros de entrada
Crea en el Data Builder una vista SQL
FV_SALEScon uso semántico Fact sobreT_SALES_ITEMS. En el panel de propiedades, abre la sección Input Parameters con el icono del lápiz y crea dos parámetros:IP_FISCAL_YEAR(String, longitud 4) eIP_DATA_CATEGORY(String, longitud 3, valor por defectoACT).FV_SALES.sql SELECT"FISCAL_YEAR","FISCAL_PERIOD","COMPANY_CODE","CHANNEL","PRODUCT_ID","DATA_CATEGORY","CURRENCY","NET_REVENUE","QUANTITY"FROM "T_SALES_ITEMS"WHERE "FISCAL_YEAR" = :IP_FISCAL_YEARAND "DATA_CATEGORY" = :IP_DATA_CATEGORYValida el SQL para que aparezcan las columnas. Después, en el menú ⋯ de
NET_REVENUEy deQUANTITY, elige Change to Measure y despliega. Filtrar por ejercicio y categoría dentro de la vista, y no solo en el modelo, es deliberado: así el filtro llega lo antes posible a la base de datos.Paso:Crea el Analytic Model base AM_SALES_CORE
En el Data Builder, elige New Analytic Model y arrastra
FV_SALESal lienzo. Se abre un diálogo con dos casillas ya marcadas (añadir todos los atributos y todas las medidas) y, como la vista tiene parámetros de entrada, una tabla para decidir qué hacer con cada uno: deja Map to → New Variable para los dos y pulsa Add.Datasphere crea dos variables estándar con el mismo nombre que los parámetros. Ábrelas desde la sección Variables del panel de propiedades y renómbralas a
P_FISCAL_YEARyP_DATA_CATEGORY(recuerda: en el Analytic Model los parámetros de entrada se llaman variables). El valor por defectoACTdel parámetro llega a la variable.Las medidas
NET_REVENUEyQUANTITYy las siete dimensiones ya están en el modelo. Guarda y despliega. Este es el modelo “de empresa”: lo mantiene el equipo central y es el que conviene proteger.
AM_SALES_CORE: la vista Fact en el lienzo (1) y las dos variables ya renombradas (2). Paso:Crea AM_SALES_RETAIL usando el modelo base como fuente
Crea otro Analytic Model,
AM_SALES_RETAIL. En el repositorio del editor solo aparecen objetos válidos como fuente: facts y Analytic Models. ArrastraAM_SALES_COREal lienzo.Al soltarlo se abre el diálogo Add “AM_SALES_CORE” In Your Model. Arriba eliges qué traer: todos los atributos, todas las medidas y las dimensiones asociadas que tenga el modelo fuente. Abajo aparece la tabla de variables, con el aviso de que las variables del modelo fuente se heredan y una columna Action que viene en Inherit. Para este caso, deja marcadas las dos casillas. Si te dejas algo, puedes traerlo después: selecciona el nodo
AM_SALES_COREen el lienzo y marca la medida o la dimensión en su panel.
Diálogo al soltar AM_SALES_CORE: qué elementos se traen y, abajo, la acción de cada variable (por defecto, Inherit). No pulses Add todavía: las variables se deciden en este mismo diálogo, en el paso siguiente.
En el panel de propiedades del modelo, Show Inherited Elements viene activado. Déjalo así: ves de un vistazo qué viene del modelo base y qué es propio del derivado, algo que agradecerás cuando el modelo crezca.
Paso:Decide qué hacer con cada variable
En la columna Action del diálogo eliges Inherit, Set Value o Map to para cada variable del modelo fuente:
P_DATA_CATEGORY→ Set Value conACT. El modelo de retail solo muestra datos reales, así que la pregunta sobra. El campo Value aparece ya relleno con el valor por defecto de la variable (ACT) y se puede editar.P_FISCAL_YEAR→ Map to → New Variable. Datasphere crea en el modelo derivado una variable con el mismo nombre.
Pulsa Add y guarda el modelo como
AM_SALES_RETAIL. Hazlo ya: si el editor se recarga antes del primer guardado, pierdes el modelo.¿Por qué no Inherit para el ejercicio? Porque una variable heredada no se puede cambiar en el modelo nuevo. Solo las variables mapeadas admiten cambios. Si el área no necesita nada distinto, Inherit es la opción más limpia; aquí sí lo necesita.
Si más adelante cambias de idea, no hace falta repetir el arrastre. Selecciona el nodo
AM_SALES_COREen el lienzo y baja hasta Variables: ahí ves cómo está resuelta cada una y, en su menú ⋯, puedes pasarla a Set Value, Map to o Inherit.
Variables del modelo fuente vistas desde el derivado: P_DATA_CATEGORY fijada a ACT y P_FISCAL_YEAR mapeada a la variable propia (1). Paso:Personaliza la variable mapeada
En el panel de propiedades del modelo, abre la variable mapeada desde la sección Variables y ajusta:
- Nombre de negocio: “Ejercicio de reporting”. Es lo que verá el usuario en el prompt de SAP Analytics Cloud.
- Nombre técnico:
P_REPORT_YEAR. Decídelo ahora: con el modelo ya guardado, Datasphere muestra un aviso de que cambiar el nombre técnico puede afectar a stories y a modelos existentes. - Valor por defecto: el ejercicio con el que quiere arrancar el área (por ejemplo,
2026).
Si el modelo tiene más de una variable, ordénalas arrastrándolas en el editor: ese orden es el que se respeta en la vista previa y en el prompt de SAC.
Paso:Añade las medidas propias del área
En el panel de propiedades del modelo, abre el menú + de la sección Measures:
- Restricted Measure
NET_REVENUE_RETAIL: medida fuenteNET_REVENUE, expresiónCHANNEL = 'RETAIL'. - Calculated Measure
RETAIL_SHARE:NET_REVENUE_RETAIL / NET_REVENUE. En Formatting, pon Scale en Percent y Decimal Places en 2.
Estas medidas viven solo en el modelo derivado. El equipo central no tiene que saber que existen, y el área no puede romper
NET_REVENUEaunque quiera.- Restricted Measure
Paso:Despliega y conecta SAC
Guarda y despliega
AM_SALES_RETAIL. Antes de salir de Datasphere, pulsa Preview: el diálogo Set Variables solo debe preguntar por “Ejercicio de reporting”, con el valor por defecto que has definido.
Vista previa de AM_SALES_RETAIL: una sola variable, con su nombre de negocio y el valor por defecto 2026. Después, en SAP Analytics Cloud, crea una story sobre el modelo: el prompt debe mostrar esa misma variable y ninguna más.
Validación
No des el modelo por bueno hasta comprobar tres cosas:
-
Mismos números con mismos valores. Abre la vista previa de
AM_SALES_COREconP_FISCAL_YEAR = 2026yP_DATA_CATEGORY = ACT, y la deAM_SALES_RETAILconP_REPORT_YEAR = 2026. El total deNET_REVENUEpor sociedad debe coincidir al céntimo. Si no coincide, revisa el valor fijado en Set Value. Con el CSV de ejemplo, esto es lo que debes ver (2026, real):Sociedad NET_REVENUENET_REVENUE_RETAILRETAIL_SHAREES011.460.407,23 486.708,42 33,33 % FR011.240.047,24 375.044,99 30,24 % PT01670.851,45 208.915,85 31,14 % Total 3.371.305,92 1.070.669,26 31,76 % -
La medida restringida cuadra con SQL. Crea una vista SQL de prueba y contrasta
NET_REVENUE_RETAILcon lo que devuelve la vista Fact resolviendo sus parámetros con valores:check_retail.sql SELECT "COMPANY_CODE", SUM("NET_REVENUE") AS "NET_REVENUE_RETAIL"FROM "FV_SALES"(IP_FISCAL_YEAR: '2026', IP_DATA_CATEGORY: 'ACT')WHERE "CHANNEL" = 'RETAIL'GROUP BY "COMPANY_CODE" -
El prompt es el que esperas. En la vista previa y en SAC solo debe aparecer la variable mapeada, con su nombre nuevo. Si aparece también la categoría de datos, la has dejado en Inherit o en Map To.
Una prueba más, para el día que alguien toque el modelo base: cambia algo en AM_SALES_CORE (por ejemplo, quita una medida que use el derivado) y guarda. SAP muestra un aviso de que el cambio puede afectar a otros modelos, y AM_SALES_RETAIL pasa a Changes to Deploy o a Design Time Error, según el cambio. Es mejor descubrirlo en desarrollo que en la reunión de cierre.
Errores habituales
| Síntoma | Causa | Solución |
|---|---|---|
| No puedo renombrar ni cambiar el default de la variable | La dejaste en Inherit: las heredadas no se pueden cambiar | Cámbiala a Map To y personaliza la variable nueva |
| El usuario de SAC sigue viendo la categoría de datos | P_DATA_CATEGORY no está resuelta con Set Value |
Fíjala a ACT en el modelo derivado y vuelve a desplegar |
| Falta una medida del modelo base en el derivado | Es una medida auxiliar: no se copian al usar el modelo como fuente | Hazla visible en el base si de verdad la necesitas, o recrea el cálculo en el derivado |
| El modelo derivado aparece en Design Time Error | Alguien cambió medidas, variables o atributos del modelo base | Revisa el aviso al desplegar el base, ajusta el derivado y despliega los dos |
| Una story deja de funcionar tras “ordenar” nombres | Se cambió el nombre técnico de una variable o medida después de guardar | Fija los nombres técnicos antes del primer despliegue y no los toques después |
Siguiente paso
Si tienes varios equipos consumiendo ventas, haz inventario: cuántos Analytic Models son copias de otro con dos medidas más. Esos son candidatos claros a convertirse en modelos derivados. Mi recomendación es empezar por uno, con el equipo central como dueño del modelo base y una regla escrita sobre qué variables se heredan, cuáles se fijan y cuáles se mapean. Y, antes de tocar el modelo base en producción, mira siempre quién depende de él.
Fuentes
- SAP Business Data Cloud – release update highlights (SAP Community, Klaus-Peter Sauer)
- Add a Fact to an Analytic Model (SAP Help Portal)
- Changing the underlying Analytic Model (SAP Help Portal)
- Creating an Analytic Model (SAP Help Portal)
- Create a Variable in an Analytic Model (SAP Help Portal)
- Create a Standard Variable (SAP Help Portal)
- Create a Restricted Measure (SAP Help Portal)
- Creating a Local Table from a CSV File (SAP Help Portal)
- Create an Input Parameter in a Graphical View (SAP Help Portal)
- Process Source Input Parameters in an SQL View (SAP Help Portal)

