Base de datos de SAP HANA

Resumen

Elemento Descripción
Estado de la versión Disponibilidad general
Productos Excel
Power BI (Modelos semánticos)
Power BI (Flujos de datos)
Fabric (Flujo de datos Gen2)
Power Apps (flujos de datos)
Analysis Services
Tipos de autenticación admitidos Basic
Base de datos
Windows
Documentación de referencia de funciones SapHana.Database

Nota:

Algunas capacidades pueden estar presentes en un producto, pero otras no, debido a los programas de implementación y las capacidades específicas del host.

Requisitos previos

Necesitará una cuenta de SAP para iniciar sesión en el sitio web y descargar los controladores. Si no está seguro de los valores, póngase en contacto con el administrador SAP de su organización.

Para usar SAP HANA en Power BI Desktop o Excel, debe tener instalado el controlador ODBC de SAP HANA en el equipo cliente local para que la conexión de datos de SAP HANA funcione correctamente. Puede descargar las herramientas del cliente de SAP HANA desde SAP Development Tools, que contiene el controlador ODBC necesario. También puede obtenerlo en el Centro de descarga de software de SAP. En el portal de software, busque el cliente de SAP HANA para equipos Windows. Como el Centro de descarga de software de SAP cambia su estructura con frecuencia, no hay disponibles instrucciones más específicas para navegar por ese sitio. Para obtener instrucciones sobre cómo instalar el controlador ODBC de SAP HANA, vaya a Instalación del controlador ODBC de SAP HANA en Windows 64 Bits.

Para usar SAP HANA en Excel, debe tener instalado el controlador ODBC de SAP HANA de 32 o 64 bits (en función de si usa la versión de 32 o 64 bits de Excel) instalada en el equipo cliente local.

Esta característica solo está disponible en Excel para Windows si tiene Office 2019 o una suscripción de Microsoft 365. Si es suscriptor de Microsoft 365, asegúrese de que tiene la versión más reciente de Office.

Se admite HANA 1.0 SPS 12rev122.09, 2.0 SPS 3rev30 y BW/4HANA 2.0.

Funcionalidades admitidas

  • Importar
  • Direct Query (modelos semánticos de Power BI)
  • Opciones avanzadas
    • Instrucción SQL

Conexión a una base de datos SAP HANA desde Power Query Desktop

Para conectar a una base de datos SAP HANA desde Power Query Desktop:

  1. Seleccionar Obtener datos > de base de datos SAP HANA en Power BI Desktop o de la base de datos > de la base de datos SAP HANA en la cinta de datos de Excel.

  2. Introduzca el nombre y el puerto del servidor de SAP HANA al que desea conectarse. En el ejemplo de la ilustración siguiente se usa SAPHANATestServer en el puerto 30015.

    Escriba la información del servidor de SAP HANA.

    De forma predeterminada, el número de puerto se establece para admitir una base de datos de contenedor única. Si la base de datos de SAP HANA puede contener más de un contenedor de bases de datos multiinquilino, seleccione Base de datos del sistema de varios contenedores (30013). Si desea conectarse a una base de datos de inquilino o a una base de datos con un número de instancia no predeterminado, seleccione Personalizado en el menú desplegable Puerto.

    Si se conecta a una base de datos de SAP HANA desde Power BI Desktop, también tiene la opción de seleccionar Importar o DirectQuery. En el ejemplo de este artículo se usa Importar, que es el valor predeterminado (y el único modo para Excel). Para obtener más información sobre cómo conectarse a la base de datos mediante DirectQuery en Power BI Desktop, vaya a Conexión a orígenes de datos de SAP HANA mediante DirectQuery en Power BI.

    También puede escribir una instrucción SQL o habilitar el enlace de columnas desde opciones avanzadas. Más información, Conectar con opciones avanzadas

    Una vez que haya escrito todas las opciones, seleccione Aceptar.

  3. Si accede a una base de datos por primera vez, se le pedirá que escriba sus credenciales para la autenticación. En este ejemplo, el servidor de SAP HANA requiere credenciales de usuario de base de datos, por lo tanto, seleccione Base de datos y escriba el nombre de usuario y la contraseña. Si es necesario, escriba la información del certificado de servidor.

    Escriba las credenciales del servidor.

    Además, es posible que tenga que validar el certificado de servidor. Para obtener más información sobre el uso de selecciones de certificados de servidor de validación, consulte Uso del cifrado de SAP HANA. En Power BI Desktop y Excel, la selección del certificado de servidor de validación está habilitada de forma predeterminada. Si ya ha configurado estas selecciones en el administrador de orígenes de datos ODBC, desactive la casilla Validar certificado de servidor. Para más información sobre el uso del administrador de orígenes de datos ODBC para configurar estas selecciones, vaya a Configuración de SSL para el acceso de cliente ODBC a SAP HANA.

    Para obtener más información acerca de los métodos de autenticación, vaya a Autenticación con un origen de datos.

    Una vez que haya rellenado toda la información necesaria, seleccione Conectar.

  4. En el cuadro de diálogo Navegador, puede transformar los datos en el editor de Power Query seleccionando Transformar datos o cargar los datos seleccionando Cargar.

Conexión a una base de datos SAP HANA desde Power Query Online

Para conectarse a datos de SAP HANA desde Power Query Online:

  1. En la página Orígenes de datos, seleccione Base de datos de SAP HANA.

  2. Introduzca el nombre y el puerto del servidor de SAP HANA al que desea conectarse. En el ejemplo de la ilustración siguiente se usa SAPHANATestServer en el puerto 30015.

  3. De manera opcional, puede escribir una instrucción SQL en Opciones avanzadas. Más información, Conectar con opciones avanzadas

  4. Seleccione el nombre de la puerta de enlace de datos local que se va a usar para acceder a la base de datos.

    Nota:

    Debe usar una puerta de enlace de datos local con este conector, ya sea local o en línea.

  5. Elija el tipo de autenticación que desea usar para acceder a los datos. También tendrá que escribir un nombre de usuario y contraseña.

    Nota:

    Actualmente, Power Query Online solo admite la autenticación básica.

  6. Seleccione Usar conexión cirfrada si usa cualquier conexión cifrada y, a continuación, elija el proveedor de cifrado SSL. Si no está usando una conexión cifrada, desactive Usar conexión cifrada. Más información: Habilitación del cifrado para SAP HANA

    Inicio de sesión en línea de la base de datos de SAP HANA.

  7. Seleccione Siguiente para continuar.

  8. En el cuadro de diálogo Navegador, puede transformar los datos en el editor de Power Query seleccionando Transformar datos o cargar los datos seleccionando Cargar.

Conectarse mediante las opciones avanzadas

Power Query proporciona un conjunto de opciones avanzadas que puede agregar a su consulta si es necesario.

En la tabla siguiente se describen todas las opciones avanzadas que puede establecer en Power Query.

Opción avanzada Descripción
Instrucción SQL Más información, Importar datos de una base de datos mediante una consulta de base de datos nativa.
Habilitación del enlace de columnas Enlaza variables a las columnas de un conjunto de resultados de SAP HANA al capturar datos. Puede mejorar potencialmente el rendimiento a costa de un uso de memoria ligeramente mayor. Esta opción solo está disponible en Power Query Desktop. Más información: Habilitación del enlace de columnas
ConnectionTimeout Una duración que controla cuánto tiempo de espera es necesario antes de abandonar un intento de establecer una conexión con el servidor. El valor predeterminado es 15 segundos.
CommandTimeout Una duración que controla durante cuánto tiempo se permite la ejecución de la consulta del lado servidor antes de que se cancele. El valor predeterminado es diez minutos.

Características compatibles con SAP HANA

En la lista siguiente se muestran las características admitidas para SAP HANA. No todas las características enumeradas aquí se admiten en todas las implementaciones del conector de base de datos de SAP HANA.

  • Tanto el conector de Power BI Desktop como el conector de Excel para una base de datos de SAP HANA usan el controlador ODBC de SAP para proporcionar la mejor experiencia de usuario.

  • En Power BI Desktop, SAP HANA admite las opciones DirectQuery e Import.

  • Power BI Desktop admite modelos de información de HANA, como vistas analíticas y de cálculo, y ha optimizado la navegación.

  • Con SAP HANA, también puede usar comandos SQL en la instrucción SQL de consulta de base de datos nativa para conectarse a tablas de filas y columnas en tablas de catálogo de HANA, que no se incluyen en las vistas analíticas y de cálculo proporcionadas por la experiencia navegador. También puede usar el conector ODBC para consultar estas tablas.

  • Power BI Desktop incluye navegación optimizada para modelos HANA.

  • Power BI Desktop admite variables y parámetros de entrada de SAP HANA.

  • Power BI Desktop admite vistas de cálculo basadas en contenedores HDI.

  • La función SapHana.Database ahora admite tiempos de espera de conexión y comandos. Más información: Conectar con opciones avanzadas

    • Para acceder a las Vistas de Cálculo basadas en contenedores HDI en Power BI, asegúrese de que los usuarios de la base de datos de HANA que usa con Power BI tengan permiso para acceder al contenedor del entorno de ejecución HDI que almacena las vistas a las que quiera obtener acceso. Para conceder este acceso, cree un Rol que permita el acceso al contenedor HDI. A continuación, asigne el rol al usuario de base de datos de HANA que usará con Power BI. (Este usuario también debe tener permiso de lectura de las tablas del sistema en el esquema de _SYS_BI, como es habitual). Consulte la documentación oficial de SAP para obtener instrucciones detalladas sobre cómo crear y asignar roles de base de datos. Esta entrada de blog de SAP puede ser un buen punto de partida.

    • Actualmente hay algunas limitaciones en las variables de HANA adjuntas a las Vistas de Cálculo basadas en HDI. Estas limitaciones se deben a errores en el lado de HANA. En primer lugar, no es posible aplicar una variable de HANA a una columna compartida de una Vista de Cálculo basada en contenedores HDI. Para corregir esta limitación, realice la actualización a HANA 2, versión 37.02 y posteriores, o bien a HANA 2, versión 42 y posteriores. En segundo lugar, los valores predeterminados de varias entradas para variables y parámetros no se muestran en la interfaz de usuario de Power BI. Un error en SAP HANA provoca esta limitación, pero SAP todavía no ha anunciado una corrección.

Habilitación del enlace de columnas

Los datos capturados desde el origen de datos se devuelven a la aplicación en variables que la aplicación ha asignado para este propósito. Para ello, la aplicación debe asociar o enlazar estas variables a las columnas del conjunto de resultados; conceptualmente, este proceso es el mismo que enlazar variables de aplicación a parámetros de instrucción. Cuando la aplicación enlaza una variable a una columna de conjunto de resultados, describe esa variable (dirección, tipo de datos, etc.) al controlador. El controlador almacena esta información en la estructura que mantiene para esa instrucción y usa la información para devolver el valor de la columna cuando se captura la fila.

Actualmente, cuando se usa Power Query Desktop para conectarse a una base de datos de SAP HANA, puede seleccionar la opción Habilitar enlace de columnas avanzado para habilitar el enlace de columnas.

También puede habilitar el enlace de columnas en consultas existentes o en consultas usadas en Power Query Online agregando manualmente la opción EnableColumnBinding a la conexión en la barra de fórmulas de Power Query o en el editor avanzado. Por ejemplo:

SapHana.Database("myserver:30015", [Implementation = "2.0", EnableColumnBinding = true]),

Hay limitaciones asociadas a la adición manual de la EnableColumnBinding opción:

  • Habilitar el enlace de columnas funciona en modo Importar y DirectQuery. Sin embargo, no es posible volver a ajustar una consulta directQuery existente para usar esta opción avanzada. En su lugar, se debe crear una nueva consulta para que esta característica funcione correctamente.
  • En el servidor SAP HANA versión 2.0 o posterior, el enlace de columnas es todo o nada. Si algunas columnas no se pueden enlazar, no se enlazará ninguna y el usuario recibirá una excepción, por ejemplo, DataSource.Error: Column MEASURE_UNIQUE_NAME of type VARCHAR cannot be bound (20002 > 16384).
  • Los servidores SAP HANA versión 1.0 no siempre notifican las longitudes de columna correctas. En este contexto, EnableColumnBinding permite el enlace de columna parcial. En algunas consultas, esto podría significar que no hay columnas enlazadas. Cuando no hay columnas enlazadas, no se obtienen ventajas de rendimiento.

Compatibilidad con consultas nativas en el conector de base de datos de SAP HANA

El conector de base de datos de SAP HANA de Power Query admite consultas nativas. Para obtener información sobre cómo usar consultas nativas en Power Query, vaya a Importar datos de una base de datos mediante una consulta de base de datos nativa.

Plegado de consultas en consultas nativas

El conector de base de datos de SAP HANA de Power Query ahora admite el plegado de consultas en consultas nativas. Más información: Plegado de consultas en consultas nativas

Nota:

En el conector de base de datos de SAP HANA de Power Query, las consultas nativas no admiten nombres de columna duplicados cuando EnableFolding se establece en true.

Parámetros en consultas nativas

El conector de base de datos de SAP HANA de Power Query ahora admite parámetros en consultas nativas. Puede especificar parámetros en consultas nativas mediante la sintaxis Value.NativeQuery.

A diferencia de otros conectores, el conector de base de datos de SAP HANA admite EnableFolding = True y especifica parámetros al mismo tiempo.

Para usar parámetros en una consulta, coloque signos de interrogación (?) en el código como marcadores de posición. Para especificar el parámetro, use el SqlType valor de texto y un valor para ese valor SqlType en Value. Value puede ser cualquier valor M, pero debe asignarse al valor del especificado SqlType.

Hay varias maneras de especificar parámetros:

  • Proporcionar solo los valores como una lista:

    { “Seattle”, 1, #datetime(2022, 5, 27, 17, 43, 7) }
    
  • Proporcionar los valores y el tipo como una lista:

    { [ SqlType = "CHAR", Value = "M" ], 
       [ SqlType = "BINARY", Value = Binary.FromText("AKvN", BinaryEncoding.Base64) ], 
       [ SqlType = "DATE", Value = #date(2022, 5, 27) ] }
    
  • Combine y relacione los dos:

    { “Seattle”, 1, [ SqlType = "SECONDDATE", Value = #datetime(2022, 5, 27, 17, 43, 7) ] }
    

SqlType sigue a los nombres de tipo estándar definidos por SAP HANA. Por ejemplo, la lista siguiente contiene los tipos más comunes usados:

  • BIGINT
  • BINARY
  • BOOLEAN
  • CHAR
  • FECHA
  • DECIMAL
  • DOUBLE
  • INTEGER
  • NVARCHAR
  • SECONDDATE
  • SHORTTEXT
  • SMALLDECIMAL
  • SMALLINT
  • TIME
  • TIMESTAMP
  • VARBINARY
  • VARCHAR

En el siguiente ejemplo se muestra cómo proporcionar una lista de valores de parámetro.

let
    Source = Value.NativeQuery(
        SapHana.Database(
            "myhanaserver:30015", 
            [Implementation = "2.0"]
        ), 
        "select ""VARCHAR_VAL"" as ""VARCHAR_VAL""
    from ""_SYS_BIC"".""DEMO/CV_ALL_TYPES""
    where ""VARCHAR_VAL"" = ? and ""DATE_VAL"" = ?
    group by ""VARCHAR_VAL""
    ", 
        {"Seattle", #date(1957, 6, 13)}, 
        [EnableFolding = true]
    )
in
    Source

En el siguiente ejemplo se muestra cómo proporcionar una lista de registros (o mezclar valores y registros):

let
    Source = Value.NativeQuery(
        SapHana.Database(Server, [Implementation="2.0"]), 
    "select
        ""COL_VARCHAR"" as ""COL_VARCHAR"",
        ""ID"" as ""ID"",
        sum(""DECIMAL_MEASURE"") as ""DECIMAL_MEASURE""
    from ""_SYS_BIC"".""DEMO/CV_ALLTYPES""
    where
        ""COL_ALPHANUM"" = ? or
        ""COL_BIGINT"" = ? or
        ""COL_BINARY"" = ? or
        ""COL_BOOLEAN"" = ? or
        ""COL_DATE"" = ?
    group by 
        ""COL_ALPHANUM"",
        ""COL_BIGINT"",
        ""COL_BINARY"",
        ""COL_BOOLEAN"",
        ""COL_DATE"",
       {
            [ SqlType = "CHAR", Value = "M" ],                                                // COL_ALPHANUM - CHAR
            [ SqlType = "BIGINT", Value = 4 ],                                                // COL_BIGINT - BIGINT
            [ SqlType = "BINARY", Value = Binary.FromText("AKvN", BinaryEncoding.Base64) ],   // COL_BINARY - BINARY
            [ SqlType = "BOOLEAN", Value = true ],                                            // COL_BOOLEAN - BOOLEAN
            [ SqlType = "DATE", Value = #date(2022, 5, 27) ],                                 // COL_DATE - TYPE_DATE
        } ,
        [EnableFolding=false]
    )
in
    Source

Compatibilidad con atributos dinámicos.

Se ha mejorado la manera en que el conector de base de datos de SAP HANA trata las columnas calculadas. El conector de base de datos de SAP HANA es un conector "cubo" y hay algunos conjuntos de operaciones (agregar elementos, contraer columnas, etc.) que se producen en el espacio "cubo". Este espacio de cubo se expone en la interfaz de usuario de Power Query Desktop y Power Query Online mediante el icono de "cubo" que reemplaza el icono de "tabla" más común.

Captura de pantalla del lado izquierdo de la vista actual en Power Query, resaltando el icono del cubo en la parte superior de la columna de número de fila.

Antes, al agregar una columna de tabla (u otra transformación que agrega internamente una columna), la consulta "quitaría el espacio del cubo" y todas las operaciones se realizarían en un nivel de tabla. En algún momento, esta lista desplegable podría hacer que la consulta deje de plegarse. Realizar operaciones de cubo después de agregar una columna ya no era posible.

Con este cambio, las columnas agregadas se tratan como atributos dinámicos dentro del cubo. Tener la consulta en el espacio de cubo para esta operación tiene la ventaja de permitirle seguir usando operaciones de cubo incluso después de agregar columnas.

Nota:

Esta nueva funcionalidad solo está disponible cuando se conecta a Vistas de Cálculo en la versión 2.0 o posterior del servidor SAP HANA.

La siguiente consulta de ejemplo usa esta nueva funcionalidad. En el pasado, obtendría una excepción "el valor no es un cubo" al aplicar Cube.CollapseAndRemoveColumns.

let
    Source = SapHana.Database(“someserver:someport”, [Implementation="2.0"]),
    Contents = Source{[Name="Contents"]}[Data],
    SHINE_CORE_SCHEMA.sap.hana.democontent.epm.models = Contents{[Name="SHINE_CORE_SCHEMA.sap.hana.democontent.epm.models"]}[Data],
    PURCHASE_ORDERS1 = SHINE_CORE_SCHEMA.sap.hana.democontent.epm.models{[Name="PURCHASE_ORDERS"]}[Data],
    #"Added Items" = Cube.Transform(PURCHASE_ORDERS1,
        {
            {Cube.AddAndExpandDimensionColumn, "[PURCHASE_ORDERS]", {"[HISTORY_CREATEDAT].[HISTORY_CREATEDAT].Attribute", "[Product_TypeCode].[Product_TypeCode].Attribute", "[Supplier_Country].[Supplier_Country].Attribute"}, {"HISTORY_CREATEDAT", "Product_TypeCode", "Supplier_Country"}},
            {Cube.AddMeasureColumn, "Product_Price", "[Measures].[Product_Price]"}
        }),
    #"Inserted Year" = Table.AddColumn(#"Added Items", "Year", each Date.Year([HISTORY_CREATEDAT]), Int64.Type),
    #"Filtered Rows" = Table.SelectRows(#"Inserted Year", each ([Product_TypeCode] = "PR")),
    #"Added Conditional Column" = Table.AddColumn(#"Filtered Rows", "Region", each if [Supplier_Country] = "US" then "North America" else if [Supplier_Country] = "CA" then "North America" else if [Supplier_Country] = "MX" then "North America" else "Rest of world"),
    #"Filtered Rows1" = Table.SelectRows(#"Added Conditional Column", each ([Region] = "North America")),
    #"Collapsed and Removed Columns" = Cube.CollapseAndRemoveColumns(#"Filtered Rows1", {"HISTORY_CREATEDAT", "Product_TypeCode"})
in
    #"Collapsed and Removed Columns"

Pasos siguientes

Los siguientes artículos contienen más información que puede resultar útil al conectarse a una base de SAP HANA.