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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

¿Analizar una columna con datos JSON mediante DAX?

Hola

¿Alguien tiene experiencia en el análisis de una columna con datos Json mediante Dax? Tengo conjuntos de datos que están conectados a mi escritorio de PowerBI mediante LiveConnection, por lo que Power Query no es una opción para mí :(.

Mi valor tiene una estructura como {"id":"12345","name":"Lily","keywords":" null","filters":"[]"} y quiero crear una nueva columna con name como nombre de columna y el valor después de name como valores de columna.

¿Es posible hacerlo con DAX?

¡Muchas gracias por su ayuda de antemano!

<3<3<3

Brenda

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

@Yiyi_1989 ,

Utilice una instrucción SWITCH o IF. En DAX, prefiero usar SWITCH. Así que modifique la columna [Nombre] a algo como esto:

Name2 = SWITCH(
           TRUE(),
           MID( [JSON], 3, 2 ) = "id", MID( [JSON], [FindStart], [FindEnd] - [FindStart] ),
                                      // this checks for the condition = "id"
           BLANK() ) // if condition <> "id", then blank

rsbin_0-1697719234565.png

Puedes reemplazar BLANK() con lo que quieras que sea tu parte "else".

Espero que esto resuelva este problema.

Saludos

Syndicate_Admin
Administrator
Administrator

¡Muchas gracias! Creo que su sugerencia es inspiradora.

Sin embargo, tengo un problema con respecto a los valores en [Json]. Esos valores tienen básicamente dos estructuras diferentes:

Uno comenzaba como {"searchID":"... ... ..." ... } y otro es como el que mencioné anteriormente {"id":"12345","name":"Lily","keywords":" null","filters":"[]"}.

Quiero especificar en mi DAX que la función FIND() solo se aplica al segundo tipo de estructura. ¿Tienes alguna idea de lo que debo hacer? ¡Muchas gracias!

Syndicate_Admin
Administrator
Administrator

@Yiyi_1989 ,

DAX tiene una serie de funciones de cadena que se pueden usar para analizar una cadena de texto.

Aquí hay un método. Lo he dividido en columnas separadas para ver mejor la lógica.
Puedes combinarlo en uno solo si te sientes cómodo con eso.

FindStart = FIND("name", [JSON] ) + 7  // Find your starting position for the Name

FindEnd = FIND( "keywords", [JSON] ) - 3  // Finds your ending position

Name = MID( [JSON], [FindStart], [FindEnd] - [FindStart] )  // Extracts the Name

rsbin_0-1697659432590.png

Una búsqueda en Google sobre funciones de cadena DAX puede conducir a otros métodos. Como dije, esto es simplemente una forma.

Espero que esto ayude.

Saludos

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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