Usar un procedimiento almacenado

Un procedimiento almacenado es una subrutina disponible para las aplicaciones que acceden a un sistema de bases de datos relacionales. Cuando se conecta a SAP Sybase ASE, Microsoft SQL Server o una Base de datos Teradata con Tableau, puede usar un procedimiento almacenado para definir la conexión.

Para Oracle, puede utilizar una función de tabla para definir la conexión. Las funciones de la tabla de Oracle actúan de forma similar a los procedimientos almacenados y se enumeran en Procedimientos almacenados en la página de la Fuente de datos.

Cuando cree una fuente de datos usando uno de estos tipos de datos, los procedimientos disponibles se mostrarán en Procedimientos almacenados, como se muestra en el ejemplo de Microsoft SQL Server.

En el panel izquierdo, arrastre el procedimiento al lienzo o haga doble clic en uno de los procedimientos mostrados. Si hay parámetros disponibles en el procedimiento, se mostrará automáticamente el cuadro de diálogo Parámetros. 

En lugar de ingresar un valor, puede usar un parámetro de Tableau existente, o crear un parámetro de Tableau para el valor.

Si luego expone el parámetro de Tableau en la vista, los usuarios podrán cambiar el valor del parámetro en el procedimiento de forma interactiva.

Los procedimientos almacenados no admiten la federación, la relación ni las uniones. Se representan en una sola tabla lógica en la capa lógica y no permiten abrir el lienzo Unión de filas/columnas (capa física).

Notas acerca de los procedimientos almacenados

Si usa procedimientos almacenados para definir una fuente de datos para Tableau, tenga lo siguiente en mente:

  • Si un procedimiento arroja más de un conjunto de resultados, Tableau lee el primero e ignora el resto.

  • Si un procedimiento almacenado tiene parámetros de salida, Tableau filtrará el procedimiento almacenado.

  • Se excluyen los procedimientos que tienen parámetros de un tipo no escalar.

  • Las columnas de conjunto de resultados que no tienen tipos coincidentes en Tableau (como varbinary, geometry y hierarchyid) se registran. Si todas las columnas de conjuntos de resultados se asignan a tipos de datos desconocidos, Tableau mostrará un mensaje:

    "El conjunto de resultados... no tiene columnas utilizables".

  • Los procedimientos almacenados que no devuelven conjuntos de resultados se muestran en la página de la fuente de datos pero fallan si se seleccionan.

  • Si no se proporciona un valor para un parámetro requerido por el procedimiento almacenado, ocurre un error. Tableau no puede determinar de forma adelantada si se requieren parámetros.

  • Tableau no realiza ninguna administración de transacciones para procedimientos almacenados. Es decir, los escritores de procedimientos almacenados no deben depender de Tableau para iniciar transacciones antes de invocar procedimientos almacenados, o para confirmarlos posteriormente.

  • Los nombres de columna deben ser únicos para que funcionen los procedimientos almacenados. Si las dos columnas tienen el mismo nombre, o si no se especifica ningún nombre, el procedimiento puede producir un error.

  • Si hay varias consultas en un procedimiento almacenado (por ejemplo, para leer valores de otra tabla o para conservar combinaciones temporales), cada una de las consultas debe devolver los mismos conjuntos de columnas en el mismo orden (mismos nombres y tipos de datos). Para asegurarse de que los nombres y el orden de las columnas coinciden en los resultados de la consulta, puede que necesite usar CAST de forma explícita para asegurarse de que el tipo de datos es correcto, por ejemplo CAST(Username as VARCHAR(20)) y asignar un nombre a las columnas de forma explícita. Si un procedimiento almacenado no sigue estas directrices, puede mostrarse un mensaje de error:

    "InsertData: error de separación de columna"

  • Si hay varias consultas en un procedimiento almacenado (por ejemplo, para leer valores de otra tabla o para conservar combinaciones temporales) y el procedimiento genera un error, pruebe a agregar SET NOCOUNT ON a la parte superior del procedimiento. Esto impide que se muestre el mensaje con información sobre el recuento de filas afectadas por una instrucción Transact-SQL como parte del conjunto de resultados de una consulta.

Adicionalmente, se aplican las siguientes restricciones para las bases de datos específicas.

Restricciones de procedimientos almacenados para bases de datos Teradata

Las siguientes restricciones se aplican a procedimientos almacenados en bases de datos Teradata.

  • Se deben proporcionar valores para cada parámetro. Si el usuario no proporciona un valor para uno o más parámetros, Tableau muestra un error de base de datos Teradata que indica que se proporcionaron muy pocos valores para el procedimiento almacenado.

Restricciones de procedimientos almacenados para bases de datos SQL Server

Las siguientes restricciones se aplican a procedimientos almacenados en bases de datos SQL Server.

  • Si el conjunto de resultados para un procedimiento almacenado contiene columnas de tipo IMAGEN o TEXTO, el procedimiento almacenado fallará con un mensaje de error de "Sintaxis incorrecta".

  • Si el ancho total del conjunto de resultados (cantidad de bytes en cada fila) excede 8060, el procedimiento almacenado falla. Esto puede ocurrir con tablas muy anchas (cientos de columnas) o con tablas que tienen columnas de texto grandes, que deben contener miles de caracteres de texto.

  • Tableau no muestra procedimientos almacenados del esquema "sys".

  • Si el usuario no proporciona un valor para uno o más parámetros requeridos por el procedimiento, Tableau muestra un error de base de datos de SQL Server de "El procedimiento requiere un valor para el parámetro @x pero este no se proporcionó".

  • Los procedimientos almacenados que contienen varias consultas deben seguir las directrices que se indican en la sección Notas acerca de los procedimientos almacenados (anterior).

  • Tableau Desktop no es compatible con los tipos de datos de TIME de Microsoft SQL Server. Cuando los campos de este tipo se incluyan en un procedimiento almacenado en una base de datos de Microsoft SQL Server, Tableau Desktop no los importará.

Restricciones de procedimientos almacenados para bases de datos SAP Sybase ASE

Las siguientes restricciones se aplican a procedimientos almacenados en bases de datos SAP Sybase ASE (solo Windows).

  • La base de datos debe tener un servidor remoto configurado.

  • Si el usuario no proporciona un valor para uno o más parámetros requeridos por el procedimiento, Tableau muestra un error de base de datos de Sybase ASE de "El procedimiento requiere un valor para el parámetro @x pero este no se proporcionó".

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!