Convertire in base36

Il software per la BI di Microsoft, leader nel mercato
Rispondi

Michelaprova
Messaggi: 1 | Topic creati
Iscritto il: mar 20 dic 2022, 16:10

Convertire in base36

Messaggio 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


Avatar utente

Andrea90
Messaggi: 2240 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 672 volte
Contatta:

Convertire in base36

Messaggio 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
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
Avatar utente

Andrea90
Messaggi: 2240 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 672 volte
Contatta:

Convertire in base36

Messaggio 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
Allegati
Base_36.xlsx
(18.63 KiB) Scaricato 22 volte
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
Rispondi