Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Lyssillic
Helper I
Helper I

Mostrar imágenes del modelo DirectQuery de la base de datos de SQL Server

Tengo una base de datos de SQL Server con una tabla que contiene imágenes en formato binario que me gustaría mostrar en una tabla de un informe. Solo puedo usar el modelo DirectQuery y no he encontrado una manera de que esto suceda, porque no puedo cambiar el tipo de datos de binario a texto, ya que no se admite en el modelo de DirectQuery.

¿Hay una manera suficiente de escribir una consulta de SQL ServerSQL Server o una forma diferente de cambiar el binario a texto para mostrar en el informe?

1 ACCEPTED SOLUTION
Lyssillic
Helper I
Helper I

Pude resolverlo con una consulta de SQL Server convirtiendo la imagen a VARBINARY(MAX) y, a continuación, convirtiéndola a XML y cambiando el valor a VARCHAR(MAX). Después de eso, lo concatené con 'data:image/jpeg;base64, ', y pude cambiar la categoría de datos a ImageUrl.

Aquí está la consulta:

SELECT
    CONCAT('data:image/jpeg;base64, ', CAST('' as XML).value('xs:base64Binary(sql:column("BinaryPicture"))', 'VARCHAR(MAX)')) AS Picture
FROM (
    SELECT
        CAST(lmePicture AS VARBINARY(MAX)) AS BinaryPicture
    FROM
        Employees
) AS A

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

@Lyssillic ¡Fantástica solución! Muchas gracias por publicarlo. Acabo de encontrarme con este problema y no pude encontrar nada en ninguna parte, ni siquiera en los documentos de MS. Aunque a partir del 11-02-2022, una columna binaria se puede convertir en texto en el editor de Power Query, pero aún así, aún desencadena la consulta no compatible con el error DQ. Incluso después de que hice exactamente el mismo concat que hiciste, pero hice el mío dentro de Power Query usando M. Y PQ todavía no quería aceptarlo. Parece que hay una limitación en el tamaño máximo de un flujo entrante de datos binarios. Pero si es texto, entonces está bien. Muy extraño.

Lyssillic
Helper I
Helper I

Pude resolverlo con una consulta de SQL Server convirtiendo la imagen a VARBINARY(MAX) y, a continuación, convirtiéndola a XML y cambiando el valor a VARCHAR(MAX). Después de eso, lo concatené con 'data:image/jpeg;base64, ', y pude cambiar la categoría de datos a ImageUrl.

Aquí está la consulta:

SELECT
    CONCAT('data:image/jpeg;base64, ', CAST('' as XML).value('xs:base64Binary(sql:column("BinaryPicture"))', 'VARCHAR(MAX)')) AS Picture
FROM (
    SELECT
        CAST(lmePicture AS VARBINARY(MAX)) AS BinaryPicture
    FROM
        Employees
) AS A

v-shex-msft
Community Support
Community Support

Hola @Lyssillic,

Me gustaría sugerirle que revise el blog a continuación para saber más sobre cómo analizar archivos de imagen de formato binario.
Puesto que está en modo de consulta directa, me gustaría sugerir le sugiero que escriba una consulta t-sql para agregar una columna personalizada para convertir binario a texto base64 y agregar el prefijo para que power bi pueda reconocer estas cadenas como imagen.

Almacenamiento de imágenes en modelos de datos de PowerBI/Analysis Services

Utilice la opción BINARY BASE64

Transact-SQLTransact-SQL: Convierte VARBINARY a Base64 String y viceversa

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

@v-shex-msft Necesito agregar una cosa más: la solución del OP elimina el mensaje de error en PQ, pero en Power BI, el objeto visual permanece atascado en el modo de carga para siempre y, después de mucho tiempo, falla con un mensaje de error de estilo visual que no se puede cargar. Así que el problema está a medio resolver en este punto.

¿Alguna idea de cómo cargar imágenes desde un SERVIDOR SQL Server local a través de DirectQuery?

@v-shex-msft Acabo de encontrarme con este problema y no pude encontrar nada en ninguna parte, ni siquiera en los documentos de MS. Aunque a partir del 11-02-2022, una columna binaria se puede convertir en texto en el editor de Power Query, pero aún así, aún desencadena la consulta no compatible con el error DQ. Incluso después de hacer exactamente lo mismo que el OP, pero hice el mío dentro de Power Query usando M. Y PQ todavía no quería aceptarlo.

¿Existe una limitación en el tamaño máximo de un flujo entrante de datos binarios? En caso afirmativo, ¿qué es Y dónde está documentado? No pude encontrar nada en línea con respecto a esto, excepto el hilo aquí.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors