Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola a todos
Podría usar un poco de ayuda con esta columna calculada que estoy tratando de crear. Debido a que se basa en texto y no estoy acostumbrado a este tipo de casos de uso, estoy luchando para llegar a una buena fórmula dax.
Mis datos se ven así:
Mensaje de texto |
el |
Zorro |
el zorro marrón rápido |
el zorro marrón rápido salta |
el zorro marrón rápido salta sobre el perro perezoso |
esfinge |
esfinge de cuarzo negro |
cuarzo negro |
esfinge de cuarzo negro, juzga mi voto |
asistentes jinxed |
los magos jinxed arrancan hiedra |
el edredón grande |
los magos jinxed arrancan hiedra de la edredón grande |
Quiero crear una columna de 'bandera' calculada basada en estos datos que da un '1' para 'unicidad' y '0' para el texto que ya está presente como 'palabra(s) inicial(es)' en otra fila. Así que la parte difícil es que la comprobación de la presencia en otra fila debe ser de la primera palabra / letra de ese campo. Así que mi resultado final deseado es:
Mensaje de texto | bandera |
el | 0 |
Zorro | 1 |
el zorro marrón rápido | 0 |
el zorro marrón rápido salta | 0 |
el zorro marrón rápido salta sobre el perro perezoso | 1 |
esfinge de cuarzo azul | 1 |
esfinge de cuarzo negro | 0 |
cuarzo negro | 1 |
esfinge de cuarzo negro, juzga mi voto | 1 |
asistentes jinxed | 0 |
los magos jinxed arrancan hiedra | 0 |
el edredón grande | 1 |
los magos jinxed arrancan hiedra de la edredón grande | 1 |
Así, por ejemplo, en las dos primeras filas, 'the' es la(s) palabra(s) inicial(es) de otras 4 filas ('el marrón rápido...' & 'el edredón grande'), pero 'zorro' no es la(s) palabra(s) inicial(es) de ninguna otra fila.
O, por ejemplo, 'cuarzo negro' no está presente como palabras iniciales en otra fila (aunque está presente a mitad de la oración en otra fila), por lo que se marca.
¡Espero haberme aclarado! He estado mirando la función dax FIND(...), pero estoy luchando para implementarla de acuerdo con mi caso de uso.
Realmente apreciarlo si alguien puede ayudarme. 🙂
Con la tabla denominada 'Table' y la columna denominada 'InputText', el código siguiente funciona para crear una columna calculada denominada flag:
flag =
VAR CurrentRow = 'Table'[InputText]
VAR IsDuplicate = COUNTROWS(FILTER('Table', 'Table'[InputText] = CurrentRow)) > 1
VAR TableWithoutCurrentRow =
FILTER(
'Table',
'Table'[InputText] <> CurrentRow
)
VAR RowsStartingWithCurrentRow =
FILTER(
TableWithoutCurrentRow,
SEARCH(CurrentRow, 'Table'[InputText], 1, 0) = 1
)
VAR IsCurrentRowUnique =
ISEMPTY(RowsStartingWithCurrentRow)
RETURN
IF(
IsDuplicate,
0,
IF(
IsCurrentRowUnique,
1,
0
)
)
@zudar
Agregue una consulta en blanco en Power Query y más allá del código siguiente y compruebe los pasos:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fY/BDoMgEER/ZeLZPyIesCBi0aUoIH69wKFpqvG02Zk3uxnGmm2UTdeyZqC9zrzj4/Xrjd5RXPCgY/KzXZ9dUJAOxTb8SBCkUAOrHfWygwb0xpcsd9txcXg++GNdhHu2za+FkpgTAsUKThmTAlEf3In1RoI1Ph/QIX379FqVTmZ7xDE4mvHHdyc=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Text = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Text", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Flag", (x)=>
Number.From(
List.Count(
List.Select( #"Changed Type"[Text] , each Text.StartsWith(_,x[Text]))
) > 1
)
)
in
#"Added Custom"
@zudar
Puede hacerlo fácilmente en Power Query, agregar una columna personalizada. He adjuntado el archivo debajo de mi firma.
¡Ahí @Fowmy!
Parece que no puedo abrir el archivo correctamente en mi versión de PowerBI Desktop. Estoy trabajando con la versión del servidor de informes de PowerBI Desktop, que es la versión: 2.88.1382.0 de 64 bits (januari 2021).
Tengo mucha curiosidad por ver lo que hiciste. No consideré usar Power Query, ¡gracias por pensar fuera de la caja! 🙂