Pagina 1 di 1
Convertire in base36
Inviato: mar 20 dic 2022, 16:24
da Michelaprova
Buongiorno,
come posso trasformare una stringa che è in formato testo (alfanumerico) in un numero in base 36?
ho provato sia tramite l'editor di powerbi che tramite le formule ma non riesco, sovente mi dà l'errore che non si puo convertire quella stringa in numero. in excel ottengo il valore desiderato tramite la formula DECIMALE(string,36)
Grazie
Convertire in base36
Inviato: mar 20 dic 2022, 16:40
da Andrea90
Michelaprova,
Non penso esista la controparte della funzione DECIMALE di excel nel mondo Dax.
Se conosci la logica da applicare per la trasformazione puoi provare a crearti una funzione personalizzata in PowerQuery.
Andrea
Convertire in base36
Inviato: mer 21 dic 2022, 9:36
da Andrea90
Michelaprova,
Ho provato ad inventare qualcosa per generare una funzione custom che ho chiamato "char_converter", il cui codice è:
Codice: Seleziona tutto
(char_to_convert as any, position_of as number) as number=>
let
list_alfa = {"0".."9", "a".."z"},
pos_list_alfa = List.PositionOf(list_alfa, Text.Lower(char_to_convert)),
result = pos_list_alfa * Number.Power(36, position_of as number)
in
result
Poi ho utilizzato questa funzione all'interno di una tabella che esporta dei codici alfanumerici, ed esegue la conversione in base 36. (Nella seconda colonna della tabella c'è il risultato ottenuto con la formula DECIMAL() per un confronto).
Codice: Seleziona tutto
let
Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Stringhe", type text}, {"Result", Int64.Type}}),
#"Added Custom" = Table.AddColumn(
#"Changed Type",
"Test",
each
List.Last(
List.Generate(
()=>[Start=0, Funct=char_converter(List.Reverse(Text.ToList([Stringhe])){0}, 0), String=List.Reverse(Text.ToList([Stringhe]))],
each [Start]<List.Count([String]),
each [Start=[Start]+1,Funct= char_converter([String]{[Start]+1}, [Start]+1) + [Funct], String=[String]]
)
)[Funct])
in
#"Added Custom"
Lascio a te testare il suo corretto funzionamento.
Andrea