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
gopalv
Employee
Employee

Contar cadenas únicas en la columna que contiene la lista de cadenas

Tengo datos como los siguientes:

Timestamp

Suscripciones

2020-06-11sub1, sub2
2020-06-11sub2, sub3
2020-06-12sub5, sub6
2020-06-12sub5

Me gustaría poder trazar un gráfico que muestre el número de suscripciones únicas en cada marca de tiempo. Así que para la marca de tiempo 2020-06-11, el valor sería 3, y para la marca de tiempo 2020-06-12, el valor sería 2. ¿Es posible?

8 REPLIES 8
harshnathani
Community Champion
Community Champion

Hola @gopalv ,

Puede utilizar Power Query

Dejar
Source á Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMtA1MNM1NFTSUSouTTLUUQCSRkqxOphyRmA5Y1Q5I4icKVjODLscCaImSrGxAA", BinaryEncoding.Base64), Compression.Deflate)), deje _t ((tipo de texto que acepta valores NULL) meta [Serialized.Text ? true]) en la tabla de tipos [Timestamp ? _t, ?"(blank)" ? _t]),
"Tipo de cambio" - Table.TransformColumnTypes(Source,"Timestamp", tipo date, "(en blanco)", escriba text-),
"Columnas renombradas" - Table.RenameColumns(-"Changed Type","(blank)", "Subscriptions" ?
SplittedCol á Table.TransformColumns('Columnas renombradas',''Subscriptions'', cada Text.Split(_,",")'),
"Suscripciones expandidas" - Table.ExpandListColumn(SplittedCol, "Subscriptions"),
"Texto recortado" - Table.TransformColumns("Suscripciones expandidas","Suscripciones", Texto.Recortar, escriba texto)
En
"Texto recortado"

Tabla Original : Han añadido algunos valores

1.jpg

2.JPG

3.JPG

Crear una medida simple

Sub - DISTINCTCOUNT('Tabla (2)'[Suscripciones])

4.JPG

saludos

Harsh Nathani

¿He respondido a tu pregunta? ¡Marca mi puesto como una solución! Apreciar con un Kudos!! (Haga clic en el botón Pulgares arriba)

Hola @gopalv ,

También puede usar este código en Power Query

Dejar
Source á Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMtA1MNM1NFTSUSouTTLUUQCSRkqxOphyRmA5Y1Q5I4icKVjODLscCaImSrGxAA", BinaryEncoding.Base64), Compression.Deflate)), deje _t ((tipo de texto que acepta valores NULL) meta [Serialized.Text ? true]) en la tabla de tipos [Timestamp ? _t, ?"(blank)" ? _t]),
"Tipo de cambio" - Table.TransformColumnTypes(Source,"Timestamp", tipo date, "(en blanco)", escriba text-),
"Columnas renombradas" - Table.RenameColumns(-"Changed Type","(blank)", "Subscriptions" ?
"Filas agrupadas" - Table.Group("Columnas renombradas", "Marca de tiempo", "a", cada Text.Combine([Subscriptions], ", "), escriba texto),
"Columnas renombradas1" - Table.RenameColumns(-"Filas agrupadas","a", "Combinado"-),
"RemovedDuplicates" á Table.TransformColumns ('Columnas renombradas1'",'Combinado', cada Text.Combine(List.Distinct(List.Transform(Text.Split(_,","), Text.Trim)),", ?)
En
"RemovedDuplicates"

1.jpg

Crear una medida

CountOfItems á LEN(MAX('Table (3)'[Combined])) - LEN(SUBSTITUTE(MAX('Table (3)'[Combined]),",","")) + 1
saludos
Hn
az38
Community Champion
Community Champion

Hola @gopalv

tratar de una medida

Measure = CALCULATE(
SUMX('Table', 
LEN('Table'[Subscriptions])-LEN(SUBSTITUTE('Table'[Subscriptions], ",", "")) + 1
), 
ALLEXCEPT('Table','Table'[Timestamp])
)

do not hesitate to give a kudo to useful posts and mark solutions as solution
LinkedIn

En mi ejemplo, tengo varias filas por marca de tiempo. ¿Este código seguiría funcionando en ese caso?

Hola @gopalv ,

Sí, lo hará.

El primer post.. Quita el delimitador y crea una nueva fila para cada marca de tiempo y, a continuación, realiza un RECUENTO DISTINCT.

El segundo post .. Combina las filas de una marca de tiempo determinada y, a continuación, elimina los duplicados y cuenta el no. de palabras.

saludos

Harsh Nathani

Preferiría una solución DAX, si es posible. La solución DAX dada no parece ser correcta y el problema con la división de suscripciones en PowerQuery es que la tabla resultante termina con valores de recuento doble o triple en otra columna (no se muestra) que representan el uso en todas las suscripciones en cada marca de tiempo.

Por ejemplo, empiezo con:

TimestampSuscripcionesComputetypeUso (en todas las suscripciones)
2020-06-11sub1, sub2Computación135
2020-06-11sub3, sub4Computación289
2020-06-12sub5, sub6Computación132
2020-06-12sub7, sub8Computación282

Su solución me dará una tabla que parece:

TimestampSuscripciónCalcularUso
2020-06-11sub1Computación135
2020-06-11sub2Computación135
2020-06-11sub3Computación289
2020-06-11sub4Computación289
...
2020-06-12sub8Computación282

Ahora, si trato de trazar el uso con el tiempo sin ningún filtro, de repente tendré el doble de uso en cada momento.

Hola

Para trazar el uso a lo largo del tiempo, arrastre Año/mes desde la tabla calendario y escriba este mwasure

•min(Datos[Uso])

Espero que esto ayude.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Hola @gopalv ,

En función de los requisitos que haya publicado, creo que tendrá que obtener su tabla en el formato correcto.

Para calcularlo una sola vez, puede crear un CC

CAL á CALCULATE(MAX('Table'[Usage]),FILTER('Table','Table'[Usage] ? EARLIER('Table'[Usage]) && 'Table'[Compute Type] ? EARLIER('Table'[Compute Type]) && 'Table'[Timestamp] ? EARLIER('Table'[Timestamp]) && 'Table'[]
1.jpg
saludos
Harsh Nathani
Le agradecería a KUDOS 🙂 🙂

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.