Trabajar en un proyecto de modelado

Desplegar modelos

Objective

After completing this lesson, you will be able to desplegar contenido de modelado en el entorno de tiempo de ejecución.

La infraestructura de implementación de SAP HANA

SAP HANA Deployment Infrastructure (HDI) es un conjunto de servicios que permite el despliegue de objetos de base de datos en contenedores HDI aislados.

Los contenedores HDI son simplemente esquemas de base de datos, pero incluyen funciones adicionales como un propietario dedicado del contenedor más metadatos para gestionar sus objetos de base de datos. Piense en un contenedor como un esquema inteligente.

Los objetos incluidos en los contenedores se definen en los módulos HDB de su proyecto mediante archivos de origen y, durante el despliegue, los objetos de tiempo de ejecución se crean y añaden al contenedor.

HDI se encarga de la gestión de dependencias y determina el orden del despliegue; también proporciona soporte para actualizar artefactos de tiempo de ejecución existentes cuando se modifican sus artefactos en tiempo de diseño correspondientes.

Un concepto clave de los contenedores HDI es el hecho de que el HDI realiza exclusivamente todo el ciclo de vida (creación, modificación y eliminación) de los objetos de base de datos. Por lo tanto, no puede crear directamente artefactos de base de datos, como tablas o vistas, con sentencias Data Definition Language (DDL) mediante SQL.

Fuentes de datos para vistas de cálculo

Al desarrollar vistas de cálculo, las fuentes de datos que seleccione deben existir como archivos de tiempo de diseño en el contenedor de su módulo HDB. Por lo tanto, deben ser de uno de los siguientes tipos:

  • Objetos de base de datos "reales" (tabla, vista, función de tabla, tablas virtuales, etc.) existentes dentro del contenedor y que tienen un archivo de tiempo de diseño correspondiente en el módulo HDB
  • Sinónimos que hacen referencia a objetos de base de datos ubicados en cualquier otro esquema que no sea el propio contenedor. Aprenderá sobre los sinónimos más adelante.

Atención

No se puede crear una vista de cálculo que haga referencia a una fuente de datos que se haya creado directamente utilizando SQL en su contenedor (por lo tanto, sin un archivo fuente). La creación falla y emite un mensaje de error, como:
Code Snippet
1
The file requires "db://HA300::TABLE_SQL" which is not provided by any file

Propiedades clave de contenedores HDI

  • Un contenedor se crea automáticamente cuando implementa el módulo de base de datos por primera vez.

  • Un contenedor genera un esquema de base de datos en el momento en que se crea un contenedor por primera vez.

  • Los objetos de base de datos se implementan en ese esquema.

  • Las definiciones de archivo de origen deben escribirse sin esquema.

  • No se permiten referencias directas a objetos fuera de su contenedor. Debe utilizar sinónimos.

Archivo de configuración de contenedor HDI

Dentro de cada módulo HDB de un proyecto encontrará un archivo muy importante y obligatorio que existe en la carpeta src con el sufijo: .hdiconfig. Este es el archivo de configuración del contenedor HDI que se utiliza para vincular los archivos de tiempo de diseño de su proyecto con el complemento de compilación instalado correspondiente.

Captura de pantalla del archivo de configuración del contenedor. Contiene los plug-ins necesarios y, en este ejemplo, la versión mínima de plug-in que se aplica a todos los plug-ins.

Sin el plug-in de compilación no es posible desplegar los objetos en tiempo de ejecución desde los archivos de tiempo de diseño. Este archivo de configuración dirige cada archivo de origen de su proyecto al complemento de compilación correcto.

Por lo general, solo hay un archivo .hdiconfig en un módulo HDB, y debe ubicarse en la carpeta src del módulo HDB. Este archivo contiene una lista de todas las vinculaciones para todos los tipos de archivo de origen.

La entrada minimum_feature_version de este archivo está allí para evitar la creación de sus objetos de módulo HDB con una versión de HANA Cloud inferior a la especificada y/o lo que requiere su código. Por ejemplo, si ha diseñado y probado su módulo HDB con la versión 1004 de los plug-ins de compilación, no se desplegará en una instancia de SAP HANA Cloud en la que se utilice la versión 1002.

Dentro del archivo de configuración del contenedor encontrará, para cada tipo de archivo de origen, dos entradas:

  • Nombre de sufijo, por ejemplo, "hdbcalculationview"

  • Nombre de plug-in, por ejemplo, "com.sap.hana.di.calculationview"

Es muy importante recordar que cuando importa un proyecto a su infraestructura, trae consigo su propio archivo .hdiconfig que hace referencia a la versión de función que se utilizó cuando se desarrolló por primera vez. Si luego planea actualizar el archivo de origen utilizando funciones más recientes de SAP HANA (por ejemplo, desea añadir una nueva función a una vista de cálculo que acaba de estar disponible con la versión más reciente de SAP HANA), no verá la nueva función en el editor de origen si el archivo .hdiconfig no se ha ajustado para utilizar la versión de función posterior.

Atención

El archivo de configuración del contenedor HDI es un archivo sin nombre y solo debe constar del sufijo .hdiconfig. Si intenta agregar un nombre, la creación del archivo .hdiconfig fallará. Déjalo como está.

La vista PROYECTOS SAP HANA

En SAP Business Application Studio, cuando un proyecto incluye un módulo de base de datos SAP HANA, está disponible una vista dedicada SAP HANA PROJECTS (junto con la vista Explorador).

Captura de pantalla de la vista PROYECTOS de SAP HANA en Business Application Studio. Utilícelo para desplegar un objeto individual, una carpeta o el módulo. Debe agregar una conexión a un contenedor HDI existente o a uno que cree como parte de la vinculación.

La vista/panel Proyectos de SAP HANA es la materialización de los módulos HDB definidos en sus proyectos. La parte superior representa la estructura de carpetas del módulo HDB. El elemento raíz corresponde a la vía de acceso al módulo HDB en el proyecto. Para crear los objetos de tiempo de ejecución dentro del esquema de contenedor HDI conectado, puede ejecutar un despliegue. Este despliegue se puede iniciar en diferentes niveles: un único archivo, una carpeta o todo el módulo HDB.

Nota

No puede manipular (mover, copiar, borrar, etc.) sus archivos de tiempo de diseño desde la vista PROYECTOS de SAP HANA, pero puede abrirlos en su editor correspondiente.

En la estructura de archivos, Implementación pendiente identifica dónde se requiere una implementación para archivos nuevos o modificados. Para los archivos de tiempo de diseño eliminados, debe activar la eliminación del objeto de tiempo de ejecución desplegando la carpeta que los contenía.

La parte inferior representa las conexiones de base de datos entre el módulo HDB y los contenedores o servicios HDI que proporcionan acceso a recursos externos.

Un proyecto con un módulo de base de datos SAP HANA necesita al menos un contenedor HDI correspondiente para desplegar sus objetos en tiempo de ejecución. Esto es lo que se muestra en la imagen, la vista PROYECTOS de SAP HANA.

En la parte de conexión, puede vincular un módulo HDB existente a un contenedor HDI nuevo o existente. También puede añadir nuevas conexiones (por ejemplo, a otro contenedor) y

El explorador de base de datos

Desde SAP Business Application Studio, puede iniciar la aplicación Explorador de base de datos para ver los artefactos de base de datos (tablas, vistas, procedimientos, vistas de columna) de uno o varios contenedores.

Al hacerlo, incluso si ha iniciado sesión en SAP Business Application Studio con su usuario habitual de SAP Business Application Studio, el acceso al contenedor lo realiza un usuario SBSS técnico (Service Broker Security Support) que se crea de forma transparente al añadir el contenedor al Explorador de base de datos. Este usuario técnico interactúa con los objetos de base de datos en su nombre, por ejemplo, para ver el contenido de una tabla o previsualizar los datos de una vista de cálculo.

Si su contenedor consume datos de un esquema externo, al usuario técnico también se le deben conceder autorizaciones para los objetos de esquema externo, por ejemplo, para ver los datos de una tabla externa referenciada por un sinónimo. Obtendrá más información al respecto en la unidad Seguridad en el modelado de SAP HANA.

Desplegar objetos de modelado

Durante el desarrollo, debe crear o actualizar los objetos de tiempo de ejecución a partir de los objetos de tiempo de diseño dentro del esquema de contenedor. Para ello, utilice la función Desplegar disponible en la vista PROYECTOS de SAP HANA.

El despliegue se basa en el servicio de contenedor HDI (un servicio de Cloud Foundry), que gestiona la interacción entre SAP Business Application Studio, HANA Deployment Infrastructure y, a su vez, la base de datos de SAP HANA.

Cuando vincula un módulo HDB a un servicio de contenedor HDI, esta vinculación crea el esquema de contenedor correspondiente, si no existe. A continuación, los objetos en tiempo de diseño se pueden desplegar en el contenedor HDI.

Estructura de creación de contenido de modelado

Al implementar un módulo de base de datos HANA, el desplegador HDI rellena el contenedor HDI, es decir, un esquema ubicado en la base de datos de SAP HANA Cloud, con los objetos de tiempo de ejecución definidos en el módulo.

Una operación de despliegue se puede ejecutar en los siguientes niveles de una estructura de proyecto:

  • Un módulo HDB completo

  • Una subcarpeta del módulo HDB

  • Uno o varios objetos individuales

Nota

La operación de despliegue descrita anteriormente no debería confundirse con lo que también se denomina Desplegar en Cloud Foundry. En Cloud Foundry, el comando deploy (cf deploy) se aplica a toda una aplicación (por ejemplo, a todo un MTA, incluido potencialmente más que solo el módulo HDB). Se utiliza principalmente cuando desea transportar y desplegar/activar su proyecto en otro entorno. Por ejemplo, del entorno DEV al entorno QA o PROD.

Independientemente de lo que implemente (módulo HDB, subcarpeta u objeto individual), siempre se aplica una verificación de dependencia de extremo a extremo a cada objeto que forma parte del alcance de creación. Por lo tanto, incluso si crea un objeto individual, habrá una verificación recursiva de todos los objetos a los que hace referencia para asegurarse de que estos objetos ya existen como objetos en tiempo de ejecución o que se definen en un objeto en tiempo de diseño y se crean al mismo tiempo.

Errores de despliegue

Al desplegar modelos definidos en un módulo HDB, es posible que se encuentre con diferentes problemas, que se describen en el log que puede consultar en la consola. Algunas están relacionadas con las verificaciones de dependencia que acabamos de analizar. Otros tienen que ver con la consistencia de los objetos de tiempo de diseño (por ejemplo, las opciones de área de nombres de las carpetas de tiempo de diseño). Otro error de compilación clásica es cuando dos archivos de tiempo de diseño diferentes proporcionan una definición para el mismo objeto de tiempo de ejecución.

Aquí tiene una lista de las causas raíz frecuentes de los errores de despliegue.

Errores más comunes durante las operaciones de compilación

  • La definición de un objeto del que depende otro objeto no se proporciona, o se proporciona pero este objeto aún no se ha desplegado.

  • La definición de un objeto en tiempo de ejecución la proporcionan varios archivos de tiempo de diseño.

  • Existe una inconsistencia en el área de nombres entre el contenido de un archivo de tiempo de diseño y la propiedad de área de nombres de la carpeta en la que se encuentra.

  • El servicio para acceder a esquemas externos no está definido o no está disponible en el espacio de destino.

  • Los sinónimos para el acceso de esquema externo aún no se han implementado.

  • Hay un error de diseño específico de objeto.

    Por ejemplo, no se ha definido ningún indicador en una vista de cálculo Cubo.

  • Existe una inconsistencia entre el objeto que crea y un objeto referenciado.

    Por ejemplo, hay una discrepancia en el nombre de una columna entre dos objetos con una dependencia.

Poner un archivo de diseño al lado para trabajar en torno a problemas de creación

Cuando una vista de cálculo no se puede crear por cualquier motivo, generalmente evita la creación de su carpeta contenedora y cualquier carpeta superior. Hay varios enfoques que puede utilizar para resolver este problema temporalmente y continuar trabajando en el resto de sus modelos, sin perder completamente el archivo de tiempo de diseño existente.

  • Exporte la Vista de cálculo a un lugar seguro y, a continuación, elimine la Vista de cálculo de su área de trabajo.

    Al ejecutar la compilación, la vista de cálculo eliminada no causará ningún problema. Cuando desee reanudar el trabajo en esta vista, solo tiene que importarla de nuevo a su ubicación original.

  • Añada .txt al archivo de tiempo de diseño. Por ejemplo, SALES.hdbcalculationview se convertirá en SALES.hdbcalculationview.txt.

    En este escenario, no elimina el archivo del área de trabajo, sino que modifica su extensión para que no se considere (temporalmente) como un archivo de tiempo de diseño de Vista de cálculo, sino como un archivo de texto sin formato. No se realiza ninguna comprobación específica en un archivo .txt al crearlo, por lo que tendrá el mismo efecto que eliminar el archivo, pero es mucho más fácil deshacer: solo tiene que eliminar la extensión .txt adicional.