Compatibilidad con el controlador ODBC de IBM i y la anulación de archivos de varios miembros (publicación larga)

Un usuario Pregunto ✅

jameoll

Hola gente de Power BI,

Tengo un problema al intentar trabajar con un archivo multimiembro dentro de DB2 en un IBM i (a veces denominado iSeries o AS/400). Estamos recuperando datos de un archivo de varios miembros que forma parte de un producto de terceros utilizado para las métricas de salud del sistema. Los archivos multimiembro son propiedad de DB2 para i OS y no son conocidos por las implementaciones de SQL. Por lo tanto, de forma predeterminada, cuando accede a un archivo de varios miembros, SQL utilizará de forma predeterminada el *PRIMERO miembro en el archivo que es el dato más antiguo. Lo que complica aún más las cosas es el hecho de que el nombre del miembro no es consistente. empieza q 00003…0004……0005. Se crea un miembro para cada día juliano del año. Aquí está la configuración del archivo que consultamos para las estadísticas de la CPU QAPMSYSL:

Lista de miembros

Q280000104 *primer miembro (mayor)
Q281000103
Q282000103
Q283000104
Q284000104
Q285000104

Q286000105 – *último miembro (datos actuales)

Existen algunas soluciones alternativas para establecer el miembro al que accede SQL en *ÚLTIMO miembro Q286000105, que son los datos actuales. IBM los detalla en un artículo de soporte: http://www-01.ibm.com/support/docview.wss?uid=nas8N1018261

CALL QSYS.QCMDEXC(‘OVRDBF FILE(archivo) TOFILE(biblioteca/archivo) MBR(miembro) OVRSCOPE(*TRABAJO)’, 0000000065.00000)

nuestros intentos de usar la sintaxis CALL anterior fallarán con Power BI mientras usamos el controlador ODBC de IBM. Parece que Power BI no admite esta función en este momento. ¿Es posible proporcionar una forma de llamar a un procedimiento externo desde Power BI?

Hay otras opciones que no son tan elegantes.

Podríamos usar un ALIAS para crear otro archivo basado en el miembro *LAST, pero como no sabemos el nombre del miembro, tenemos que agregar lógica para recuperarlo y luego crear el archivo de alias todos los días.

Escriba un programa RPG para fusionar todos los miembros del archivo en un archivo de solo lectura todos los días.

muestra aquí:

https://www.itjungle.com/2016/03/01/fhg030116-story01/

Supongo que estoy buscando la forma más fácil que nos permita capturar siempre los datos del miembro actual para que el SQL se ejecute correctamente sin tener que codificar mucho. ¿Algunas ideas?

jim o.

jameoll

En respuesta a jameoll

Dado que solo queríamos extraer registros del *ÚLTIMO miembro de un archivo de varios miembros, encontramos una solución alternativa para usar Query/400 con un comando RUNQRY. Esto extrae los registros del miembro *LAST a través de un trabajo programado de forma cíclica a un archivo físico de un solo miembro que permite que nuestra instrucción SQL funcione dentro de Power BI. Gracias o tu ayuda!

Jim

Hola Jim,

¿Probó el conector DB2 en Power BI? Por favor, consulte la instantánea a continuación.

Soporte para IBM-i-ODBC-driver-and-multimember-file-override

Atentamente,
Valle

jameoll

En respuesta a v-jiascu-msft

Valle,

Esta opción parece estar diseñada para el producto de puerta de enlace IBM DB2 Connect. Está intentando conectarse al puerto TCP 50000 en el servidor IBM i. Obtenemos un error SQLSTATE 08S01 de conexión rechazada para credenciales de usuario válidas. Este controlador no funcionará.

Jim

En respuesta a jameoll

Hola Jim,

Para ser honesto, no sé mucho sobre la serie i de IBM. ¿El usuario tiene suficientes privilegios? ¿Utilizó el método de autenticación adecuado?

Atentamente,
Valle

jameoll

En respuesta a v-jiascu-msft

Valle,

Gracias por tu ayuda. Los intentos de enviar lo siguiente a través del controlador ODBC de IBM i devuelven el siguiente mensaje:

Encontramos un error al intentar conectarnos

Detalles: «Esta consulta de base de datos nativa no se admite actualmente»

No son credenciales, ya que puedo conectarme y emitir una simple selección * de QIWS/QCUSTCDT

Este es un archivo de muestra enviado con el sistema operativo para la prueba de consultas….

Jim

jameoll

En respuesta a jameoll

Realmente necesito que el administrador de productos admita una base de datos empresarial. Todas las herramientas que utilizamos para conectarnos a IBM i admiten procedimientos SQL externos.

jameoll

En respuesta a jameoll

Dado que solo queríamos extraer registros del *ÚLTIMO miembro de un archivo de varios miembros, encontramos una solución alternativa para usar Query/400 con un comando RUNQRY. Esto extrae los registros del miembro *LAST a través de un trabajo programado de forma cíclica a un archivo físico de un solo miembro que permite que nuestra instrucción SQL funcione dentro de Power BI. Gracias o tu ayuda!

Jim

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *