Cómo usar imágenes almacenadas en una tabla de SQL Server con Power BI

Un usuario Pregunto ✅

Power BI tiene varias opciones para mostrar imágenes en un informe o tablero, pero en su mayoría requieren que la imagen sea una URL de un sitio web de acceso público. Lo que le mostraré en esta publicación es una forma de tomar imágenes almacenadas en una base de datos y vincularlas a una tabla de visualización. Esto funcionará con muchas imágenes que muestran imágenes. Mi caso de uso fue mostrar imágenes de gráficos generadas a partir de R usando el servidor de aprendizaje automático de SQL Server

@Meagan Longoria recientemente me presentó un gran artículo de @SQLJason Incrustación de imágenes en Power BI usando Base64. Esto me dio toda la información que necesitaba para buscar una solución para vincular datos de imagen almacenados en una tabla de SQL Server.

Definitivamente lea el artículo de SqlJason, prestando mucha atención a las limitaciones, etc. Esta solución está diseñada para imágenes relativamente pequeñas que mostraría en un informe. Si lo usa para imágenes grandes, es probable que falle. Reducir la resolución en esos casos.

Obtener imágenes en SQL Server

Vaya a su SQL Server favorito y cree una tabla e inserte algunas imágenes. Aquí está mi código de muestra para darle una forma en que puede obtener imágenes en una tabla de base de datos

--CREATE Table Logo
--(
--    LogoId int,
--    LogoName varchar(255),
--    LogoImage image
--)

INSERT INTO dbo.Logo
( 
  LogoId,
  LogoName,
  LogoImage
)  
SELECT  1,'Power BI',  
      * FROM OPENROWSET  
      ( BULK 'C:UsersmeDesktopLogoDemopowerbi.png',SINGLE_CLOB)  as ImageFile

INSERT INTO dbo.Logo
( 
  LogoId,
  LogoName,
  LogoImage
)  
SELECT  2,'Azure',  
      * FROM OPENROWSET  
      ( BULK 'C:UsersmeDesktopLogoDemoazure.png',SINGLE_CLOB)  as ImageFile

INSERT INTO dbo.Logo
( 
  LogoId,
  LogoName,
  LogoImage
)  
SELECT  3,'Microsoft',  
      * FROM OPENROWSET  
      ( BULK 'C:UsersmeDesktopLogoDemomicrosoft.png',SINGLE_CLOB)  as ImageFile

Obtenga los datos de la imagen con Power BI Desktop

Ahora que tiene algunas imágenes en una tabla SQL, cambie a Power BI Desktop y obtenga los datos.
(En el escritorio: obtener datos, servidor SQL, iniciar sesión en su servidor SQL y elegir la tabla que almacena imágenes.

2018-03-23_15-21-1.jpg

Cambie la columna binaria a Texto

2018-03-24_9-51-27.jpg

Ahora cree una columna personalizada y agregue un URI para indicarle a Power BI que son imágenes png. Si usa jpeg, use jpeg en lugar de png.

2018-03-24_9-52-27.jpg

Cerrar y aplicar los datos.

Este es un paso importante. En la pestaña Modelado, cambie la columna de la imagen ([Logo]) a una categoría de datos de URL de imagen.

2018-03-24_10-11-07.jpg

Ahora puede usar elementos visuales, como una tabla, y mostrar sus imágenes que provienen de un servidor SQL en lugar de tener que encontrar una manera de almacenar imágenes en un sitio público de Internet.

2018-03-24_10-17-28.jpg

Espero que esto funcione para usted como lo hizo para mí.

En respuesta a nrsleight

Sí tu puedes. Consulte este artículo https://blog.gbrueckl.at/2018/01/storing-images-powerbi-analysis-services-data-models/

gabrielvigo

¡Hola a todos!

Seguí todos los pasos.

Pero tengo problemas con las imágenes que subo (de PowerApps a SQL) con el celular, como foto.

Subí algunos como png desde la PC y esos se ven.

Las imágenes JPEG no están completamente cargadas.

Captura de pantalla_1.png

administrador_xlsior

Hola tios,

¿Alguien ha probado alguna vez o sabe cómo hacerlo con Direct Query?

Intenté importar y funciona, pero cuando se trata de Consulta directa, ya que necesita cambiar el tipo de datos en la columna, no está permitido a menos que lo cambie a Importar.

¿Alguien sabe cómo?

Gracias

neish

En respuesta a administrador_xlsior

@admin_xlsior No estoy seguro de si todavía tiene este problema, pero lo que encontré es que acabo de crear un Veiw dentro de mi SQL DB y usé Json para convertir las imágenes de bianary a Base64Jpeg. Simplemente extraería las imágenes de la vista que creó, pero tengo un problema con las imágenes que son demasiado grandes para que Power BI las represente.

CREAR VER TNIPIC_VER COMO
SELECCIONAR VOLVER
DESDE ABRIRJSON(
(
SELECCIONE CUSTOMER_ID, ATRÁS, CHECKED_IN
DESDE (SELECCIONE DBO. SU BASE DE DATOS COMO ATRÁS) T
Para JSON automático
)
)CON (VOLVER VARCHAR(MAX))

cymorg

¿Es posible usar imágenes almacenadas como datos binarios – varbinary (max) – almacenadas en SQL Server?

En respuesta a cymorg

La longitud de los datos codificados debe ser inferior a 32766 caracteres.

bernier

Intenté todos los pasos establecidos aquí, pero no funcionó. Todo lo que veo son las URL o los símbolos de «imagen rota». Pensando que podría ser un problema de tamaño de imagen, reduje las imágenes a menos de 100K y todavía no me gustó. Revisé el foro de Ideas y este se presentó por primera vez hace más de TRES AÑOS sin respuesta de Microsoft. ¿Por qué tenemos que tomar imágenes internas que se encuentran en tablas y exportarlas a un servidor de archivos y luego vincularlas para mostrarlas en un informe interno? Es más que ridículo.

andy_scott42

En respuesta a bernier

Descubrí que la longitud máxima que Power BI puede tener para procesar una cadena es de 32766 caracteres.

Entonces, una vez que haya convertido su imagen a una cadena Base64, si la longitud de la cadena es mayor que esto, recortará la imagen.

administrador_xlsior

En respuesta a andy_scott42

Hola, probé el mismo paso y conté que el carácter es 1024, pero aún se muestra como una imagen rota. Mi imagen es png.

Sin embargo, al observar la longitud del carácter, no estoy seguro de si es correcto o si de alguna manera durante la conversión a texto se trunca. porque bastante raro que todos en la misma longitud.

En respuesta a administrador_xlsior

Parece que la longitud del tipo de datos que está utilizando termina en 1024. Mire varchar (max)

administrador_xlsior

En respuesta a mjfulke

Lo siento, lo copié a Excel y uso la función Len, no estoy seguro de por qué me da ese 1024.

Pero agrego una columna calculada directamente en Power BI en la misma tabla, resulta que me da lo que creo que es la longitud correcta.

Se muestra alguna variación de longitud, pero no excede 32677, pero no me muestra la imagen en lugar de un ícono de imagen rota.

Pensando en rendirme también. 😞

cymorg

En respuesta a administrador_xlsior

Renuncié a esto porque necesito una resolución grande/alta. imágenes Un enfoque alternativo fue escribir las imágenes en temp. archivos en el disco e inserte un enlace a estos en mi conjunto de datos. Parece que PowerBI solo admite imágenes de tipo icono pequeño listas para usar. Así es la vida.

DNickell

En respuesta a andy_scott42

andy_scott42 parece haberlo clavado. Si podrá o no utilizar las técnicas de este artículo dependerá del tamaño de sus imágenes (en píxeles) y del nivel de detalle.

En la captura de pantalla a continuación… la que probablemente imitaré para mi trabajo es la #3. Usando Snagit, tomo la imagen y la cambio de tamaño a algo menor o igual a 100×100 píxeles. Luego cambio el tamaño del lienzo a 105×105 píxeles para darle un borde. No espero necesitar nada que se muestre en mis visualizaciones que sea más grande que eso.

Explícalo.png

#1 es pequeño y de baja resolución. Es demasiado borroso y poco atractivo dada la aplicación de color de 4 bits.

#2 es pequeño y como resultado – borroso

#3 funcionará bien (ver descripción arriba). Sus 9 KB (muy por debajo de los 32 KB mencionados como límite)

#4 es una imagen grande con solo 16 colores. El color reducido funciona en su mayor parte, pero eso puede no ser válido para otras imágenes.

#5 ilustra lo que le puede pasar a una imagen de más de 32kb

Por lo tanto, piense qué tan grandes deben ser realmente sus imágenes para sus informes/paneles. Formatear con antelación. Si, con el tamaño de imagen de destino, aún tiene más de 32 KB, considere reducir la resolución o el color.

lunds007

En respuesta a andy_scott42

¡Me encontré con el mismo problema! fotos recortadas loco sonriente ¿Alguien ha encontrado una solución genial para esto todavía?

syale

¿Hay un límite de tamaño para el png?

En respuesta a syale

Hay un límite. Nada documentados pero tienen que ser «más pequeños». Probé con un jpg de 3 MB y no se pudo renderizar.

andy_scott42

En respuesta a mjfulke

Estoy usando este método para mostrar imágenes en una tabla y algunas de las imágenes se están recortando. ¿Se debe a que el tamaño de la imagen es demasiado grande?

nrsleight

¿Podrías hacer algo similar con SSAS?

En respuesta a nrsleight

Sí tu puedes. Consulte este artículo https://blog.gbrueckl.at/2018/01/storing-images-powerbi-analysis-services-data-models/

Deja un comentario

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