Login Login
MORE

WIDGETS

Widgets

Wanted articles
Who is online?
Article tools

NavigazioneMarittima:PowerBI Programmazione

From Aino Wiki

Jump to: navigation, search

Custom visuals

L'ambiente di sviluppo include l'installazione di node.js, pbiviz e Visual Studio Code (preparazione ambiente di sviluppo).

Linguaggio delle formule

Power Query M

PowerBI usa un linguaggio interno per le composizioni delle formule chiamato: Power Query M: [1]

Seguono lo stesso esempio in due momenti. E' il risultato del "Query Editor" dopo aver aggiunto una colonna con l' "Advanced Editor". Si aggiunge una colonna con la differenza di date, traformata in giorni e con l'aggiunta di 1 (giorno). PURTROPPO però questi cambiamenti non son tollerati dalla "Direct Query" di ciò se ne ha notizia al salvataggio.
Es. 1

let
    Source = Sql.Database("SPXMIW2869", "RS_Plan_ProjectVCVI_Test"),
    dbo_v_Projects = Source{[Schema="dbo",Item="v_Projects"]}[Data],
    #"Added Custom" = Table.AddColumn(dbo_v_Projects, "Days", each [DateTo]-[DateFrom]),
    #"Inserted Days" = Table.AddColumn(#"Added Custom", "Days.1", each Duration.Days([Days]) + 1, Int64.Type),
    #"Removed Columns" = Table.RemoveColumns(#"Inserted Days",{"Days"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"IDProject", "IDOwner", "FullName", "Description", "DateFrom", "DateTo", "Days.1", "ProgressPerc"})
in
    #"Reordered Columns"

Es. 2. Stessa funzione di prima ma semplificata

let
    Source = Sql.Database("SPXMIW2869", "RS_Plan_ProjectVCVI_Test"),
    dbo_v_Projects = Source{[Schema="dbo",Item="v_Projects"]}[Data],
    #"Added Custom" = Table.AddColumn(dbo_v_Projects, "Days", each Duration.Days([DateTo]-[DateFrom]) + 1)
in
    #"Added Custom"

DAX

Ottimo manuale Online:

Tutorial:

Varie

Riferimento a tabelle:
'Table Name'[ColumnName] caso in cui nel nome della tabella ci siano spazi TableName[ColumnName] caso in cui nel nome della tabella NON ci siano spazi

Funzioni tipiche

Es.: NOW()

Operatori logici

OR = || AND = && Esempio in una "Measure":

Conditional Date1 = IF(([Selected DateFrom] <= [DatetoM1] 
							&& [Selected DateTo] >= [DateFromM1])
						|| [FlatStatus] = "Freezed" 
						|| [FlatStatus] = "Late" 
					 ,"T", "F") 

Stringhe

Elenco funzioni sulle stringhe: docs.microsoft.com
COMBINEVALUES, concatena con separatore n-campi di tabelle.
EVALUATE DISTINCT(SELECTCOLUMNS(DimDate, "Month", COMBINEVALUES(",", [MonthName], [CalendarYear])))
Visualizzerà una tabella con la seguente colonna:

January,2007
February,2007
...etc

CONCATENATE, Unisce due stringhe di testo in una sola.
CONCATENATE(<text1>, <text2>)

RIGHT, prende n caratteri di una stringa contando da destra
RIGHT(<text>, <num_chars>)
Esempio:
CONCATENATE("W", RIGHT(CONCATENATE("0", WEEKNUM('Calendar'[Date])), 2))
Produrrà stringhe come: W01, W10, W54

Date

  • DATE
  • HOUR
  • NOW() restituisce la data di oggi ma CON orario
  • TODAY() restituisce la data di oggi ma SENZA orario
  • EOMONTH
  • WEEKDAY

Calcolo

  • CALCULATE(<expression>,<filter1>,<filter2>…) Valuta una espressione nel contesto di dati filtrati. Il primo parametro, l'espressione, è essenzialmente una 'measure'. Il valore restituito è il risultato dell'espressione fornita Dettagli

Filtraggio

  • ALL( [ | <column>[, <column>[, <column>[,…]]]] )</code>, il primo parametro è la tabella da cui rimuovere i filtri ed il secondo è la colonna. SCOPO: Restituisce una tabella o una colonna senza i filtri. Dettagli
  • ALLSELECTED([<tableName> | <columnName>[, <columnName>[, <columnName>[,…]]]] ), il primo parametro (opzionale) è il nome di una tabella esistente, il secondo parametro (opzionale) è il nome del campo della tabella di prima. SCOPO: Restituisce il contesto della query CON i filtri. Dettagli
  • Variabili

    Calendar è una tabella col campo [Date]

    IsToday = 
    	var currentRowDate = FORMAT(Calendar[Date], "dd/MM/yyyy")  
    	
    	var isToday= FORMAT(NOW(), "dd/MM/yyyy") 
    	
    	return 
    		IF(isToday= currentRowDate
    			, "yes"
    			, "no")
    

    Altro

    Selected DateFrom = CALCULATE (IF(FORMAT(MIN(Calendar[Date]), "dd/MM/yyyy") = FORMAT(TODAY(), "dd/MM/yyyy")
    				, MIN(Calendar[Date])-20
    				, MIN(Calendar[Date]))
    				, ALLSELECTED(Calendar[Date]) )
    

    Campi custom

    Campo data senza orario

    Esiste già il campo [adetdate] nella vista V_D_rpt_trf_cps_cc ma è di tipo DateTime, senza appesantire la vista SQL si può aggiingere un "campo trasformato" in PowerBI, allo scopo la definizione del nuovo campo si può fare usando DAX. Segue esempio ma attenzione a cambiarne la tipologia di formato da testo a data.

    _adetdate_short = FORMAT('V_D_rpt_trf_cps_cc'[adetdate], "dd/MM/YY")
    

    Campo ora da data

    Si usa la funzione HOUR(<datetime>)

    _hour = HOUR('V_D_rpt_trf_cps_cc'[adetdate])
    

    Mappa e Link


    PowerBI | MS Power apps


    MS SQL | SSRS - Reporting Server | SQL Integration Services | Tools di Reportistica
    C# | Visual Studio | Dizionario IT


    Parole chiave:

Author