abujouz86
Tengo una columna de datos que incluye, por ejemplo, «1 persona» o «10/1». Quiero eliminar los caracteres dejando sólo el número y si hay un / quiero añadir el número a la izquierda al número a la derecha (por ejemplo, 10/1 a 11).
En Excel escribiría la fórmula de esta manera:
AntrikshSharma
En respuesta a abujouz86
@ abujouz86 En ese caso puedes probar esto:
Column =
VAR CurrentCategory = Abu[Category]
VAR AllAlphabets =
SELECTCOLUMNS (
ADDCOLUMNS (
GENERATESERIES ( 65, 90, 1 ),
"Alphabets", LOWER ( UNICHAR ( [Value] ) )
),
"Alphabets", [Alphabets]
)
VAR RemovePeople =
IF (
CONTAINSSTRING ( CurrentCategory, "people" ),
SUBSTITUTE ( CurrentCategory, " people", "" ),
IF (
CONTAINSSTRING ( CurrentCategory, "person" ),
SUBSTITUTE ( CurrentCategory, " person", "" )
)
)
VAR SlashPostion =
SEARCH ( "https://community.powerbi.com/", RemovePeople, 1, 0 )
VAR Result =
IF (
SlashPostion > 0,
VAR LeftValue =
MID ( RemovePeople, 1, SlashPostion - 1 )
VAR RightValue =
MID ( RemovePeople, SlashPostion + 1, LEN ( RemovePeople ) - SlashPostion )
VAR Result =
INT ( LeftValue ) + INT ( RightValue )
RETURN
Result,
INT ( RemovePeople )
)
RETURN
Result
AntrikshSharma
@ abujouz86 Prueba esto:
Column =
VAR CurrentCategory = Abu[Category]
VAR AllAlphabets =
SELECTCOLUMNS (
ADDCOLUMNS (
GENERATESERIES ( 65, 90, 1 ),
"Alphabets", LOWER ( UNICHAR ( [Value] ) )
),
"Alphabets", [Alphabets]
)
VAR RemovePeople =
SUBSTITUTE ( CurrentCategory, " people", "" )
VAR FilterValues =
FILTER (
ADDCOLUMNS (
GENERATESERIES ( 1, LEN ( RemovePeople ), 1 ),
"v", MID ( RemovePeople, [Value], 1 )
),
[v] <> "https://community.powerbi.com/"
&& NOT [v] IN AllAlphabets
)
VAR Result =
SUMX ( FilterValues, INT ( [v] ) )
RETURN
Result
abujouz86
En respuesta a AntrikshSharma
Gracias – He reemplazado «Abu[categoría]». Sin embargo, recibo el mensaje de error» No se puede convertir el valor » de tipo Texto al tipo Número. «
AntrikshSharma
En respuesta a abujouz86
@ abujouz86 Por favor, ignora la publicación anterior, no tenía cuentas 15/1 correctamente. Estoy adjuntando el archivo debajo de mi firma, probando que:
Column =
VAR CurrentCategory = Abu[Category]
VAR AllAlphabets =
SELECTCOLUMNS (
ADDCOLUMNS (
GENERATESERIES ( 65, 90, 1 ),
"Alphabets", LOWER ( UNICHAR ( [Value] ) )
),
"Alphabets", [Alphabets]
)
VAR RemovePeople =
SUBSTITUTE ( CurrentCategory, " people", "" )
VAR SlashPostion =
SEARCH ( "https://community.powerbi.com/", RemovePeople, 1, 0 )
VAR Result =
IF (
SlashPostion > 0,
VAR LeftValue =
MID ( RemovePeople, 1, SlashPostion - 1 )
VAR RightValue =
MID ( RemovePeople, SlashPostion + 1, LEN ( RemovePeople ) - SlashPostion )
VAR Result =
INT ( LeftValue ) + INT ( RightValue )
RETURN
Result,
INT ( RemovePeople )
)
RETURN
Result
abujouz86
En respuesta a AntrikshSharma
Esto es excelente, gracias! No se está ejecutando en mi tabla porque hay un término adicional «persona» que no estaba en los datos de ejemplo anteriores, lo he puesto a continuación y estas son todas las combinaciones posibles en la columna. Siento no haberlo incluí antes – Agradezco su ayuda en esto, gracias.
Idcategoría |
2 personas |
8/1 personas |
5/1 personas |
4/1 personas |
3 personas |
4 personas |
9/1 personas |
6/1 personas |
7/1 personas |
15/1 personas |
1 persona |
11/1 personas |
13/1 personas |
3/1 personas |
10/1 personas |
AntrikshSharma
En respuesta a abujouz86
@ abujouz86 En ese caso puedes probar esto:
Column =
VAR CurrentCategory = Abu[Category]
VAR AllAlphabets =
SELECTCOLUMNS (
ADDCOLUMNS (
GENERATESERIES ( 65, 90, 1 ),
"Alphabets", LOWER ( UNICHAR ( [Value] ) )
),
"Alphabets", [Alphabets]
)
VAR RemovePeople =
IF (
CONTAINSSTRING ( CurrentCategory, "people" ),
SUBSTITUTE ( CurrentCategory, " people", "" ),
IF (
CONTAINSSTRING ( CurrentCategory, "person" ),
SUBSTITUTE ( CurrentCategory, " person", "" )
)
)
VAR SlashPostion =
SEARCH ( "https://community.powerbi.com/", RemovePeople, 1, 0 )
VAR Result =
IF (
SlashPostion > 0,
VAR LeftValue =
MID ( RemovePeople, 1, SlashPostion - 1 )
VAR RightValue =
MID ( RemovePeople, SlashPostion + 1, LEN ( RemovePeople ) - SlashPostion )
VAR Result =
INT ( LeftValue ) + INT ( RightValue )
RETURN
Result,
INT ( RemovePeople )
)
RETURN
Result
abujouz86
En respuesta a AntrikshSharma
Increíble, gracias gracias gracias !!!
AntrikshSharma
@ abujouz86 Prueba esto:
Column =
VAR CurrentCategory = Abu[Category]
VAR AllNumbers =
GENERATESERIES ( 0, 9, 1 )
VAR RemovePeople =
SUBSTITUTE ( CurrentCategory, " people", "" )
VAR CheckForSlash =
SEARCH ( "https://community.powerbi.com/", RemovePeople, 1, 0 )
VAR FilterValues =
FILTER (
ADDCOLUMNS (
GENERATESERIES ( 1, LEN ( RemovePeople ), 1 ),
"v", MID ( RemovePeople, [Value], 1 )
),
[v] <> "https://community.powerbi.com/"
&& INT ( [v] ) IN AllNumbers
)
VAR Result =
SUMX ( FilterValues, INT ( [v] ) )
RETURN
Result
AntrikshSharma
@ abujouz86 ¿Puede proporcionar algunos datos de ejemplo?
abujouz86
En respuesta a AntrikshSharma
Idcategoría |
2 personas |
2 personas |
8/1 personas |
8/1 personas |
8/1 personas |
8/1 personas |
2 personas |
5/1 personas |
5/1 personas |
4/1 personas |
3 personas |
4 personas |
4 personas |
4 personas |
9/1 personas |
5/1 personas |
8/1 personas |
6/1 personas |
8/1 personas |
8/1 personas |
5/1 personas |
7/1 personas |
8/1 personas |
8/1 personas |
15/1 personas |
Syndicate_Admin
@ abujouz86
Le sugiero que realice este tipo de transformaciones en Power Query, si es posible.
abujouz86
En respuesta a Syndicate_Admin
¿Cómo hacerlo en la consulta de energía?
PaulDBrown
En respuesta a abujouz86
@ abujouz86
@AntrikshSharma ha privado una opción mediante DAX. Si quieres hacerlo en Power Query …
El código de este ejemplo es:
let
Source = Excel.Workbook(File.Contents("C:UsersPaulOneDriveShared webComm PBIsTransform Category ID PQCategory ID.xlsx"), null, true),
CATEGORYID_Table = Source{[Item="CATEGORYID",Kind="Table"]}[Data],
#"Duplicated Column1" = Table.DuplicateColumn(CATEGORYID_Table, "CATEGROYID", "CATEGROYID - Copy"),
#"Renamed Columns2" = Table.RenameColumns(#"Duplicated Column1",{{"CATEGROYID", "Original"}}),
#"Replaced Value" = Table.ReplaceValue(#"Renamed Columns2","people","",Replacer.ReplaceText,{"CATEGROYID - Copy"}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Replaced Value", "CATEGROYID - Copy", Splitter.SplitTextByDelimiter("https://community.powerbi.com/", QuoteStyle.Csv), {"CATEGROYID - Copy.1", "CATEGROYID - Copy.2"}),
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"CATEGROYID - Copy.1", Int64.Type}, {"CATEGROYID - Copy.2", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Sum", each [#"CATEGROYID - Copy.1"] + [#"CATEGROYID - Copy.2"]),
#"Added Conditional Column" = Table.AddColumn(#"Added Custom", "Final result", each if [#"CATEGROYID - Copy.2"] = null then [#"CATEGROYID - Copy.1"] else [Sum]),
#"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column",{"CATEGROYID - Copy.1", "CATEGROYID - Copy.2", "Sum"})
in
#"Removed Columns"
Y he incluido el archivo de muestra
PaulDBrown
En respuesta a abujouz86
@ abujouz86
¿Puede proporcionar un conjunto de datos de ejemplo?