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

The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!

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

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
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! It's time to submit your entry.

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.