Definire data inizio e data fine L’argomento è risolto

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

viaggiatrice
Messaggi: 44 | Topic creati
Iscritto il: mar 6 feb 2024, 7:32
Ringraziato: 3 volte

Definire data inizio e data fine

Messaggio da viaggiatrice »

Buongiorno,

ho un set di dati composto, tra le altre, dalle colonne Inizio / Fine / Numero Ordine.
All'interno del set sono presenti più righe per lo stesso numero ordine che riportano però data/ora inizio e data/ora fine differenti.

Ad esempio:
ordine 1 inizio 21/1/2024 07.00 fine 21/1/2024 07.30
ordine 1 inizio 21/1/2024 07.40 fine 21/1/2024 09.20
ordine 1 inizio 21/1/2024 12.00 fine 21/1/2024 13.20
ordine 3 inizio 25/1/2024 07.00 fine 25/1/2024 07.30

Ho bisogno di trovare la data di inizio di ogni ordine (la più vecchia) e la data di fine più recente. Nel caso di ordine 1 sarà inizio 21/1/2024 alle 07.00 e fine il 21/1/2024 alle ore 13.20

Mi serve perchè questo deve compilare nel report una tabella con colonna inizio, colonna fine, colonna ordine e tutti gli altri dettagli.

Ho provato a creare una nuova tabella con questa DAX ma ho errore.

Codice: Seleziona tutto

NuovaTabella =
SUMMARIZE (
    Manutenzioni,
    Manutenzioni[Ordine],
    "InizioFT", MINX ( FILTER ( Manutenzioni, Manutenzioni[Ordine] = EARLIER ( Manutenzioni[Ordine] ) ), Manutenzioni[Inizio_fermo_tecnico] ),
    "FineFT", MAXX ( FILTER ( Manutenzioni, Manutenzioni[Ordine] = EARLIER ( Manutenzioni[Ordine] ) ), Manutenzioni[Fine_fermo_tecnico] )
)
Credo sia sbagliato l'approccio ma non riesco a venirne fuori. Ci deve essere il modo per avere questo raggruppamento nel report.

Non ho possibilità di condividere il db perché interno. Cosa posso fornire?


Avatar utente

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

Definire data inizio e data fine

Messaggio da Andrea90 »

FILTER ( Manutenzioni, Manutenzioni[Ordine] = EARLIER ( Manutenzioni[Ordine] )

Non usare mai EARLIER. La sua utilità è terminata anni fa con l'avvento delle variabili VAR.

SUMMARIZE() non si usa mai per creare una tabella con nuove colonne, genera una moltitudine di errori difficili da individuare. Si utilizza sempre l'accoppiata ADDCOLUMNS() + SUMMARIZE(). Anche perché nel tuo caso ogni riga rappresenta un ordine e dunque dovrai far si che la singola riga che iteri, e dunque il singolo ordine, diventi un contesto valutativo a se stante (utilizzerai CALCULATE per questo sfruttando il concetto di Context Transition, oppure farai riferimento a misure (che in automatico fanno questo per te)).

viaggiatrice ha scritto: gio 21 mar 2024, 8:50 Non ho possibilità di condividere il db perché interno. Cosa posso fornire?
Un semplice file excel con qualche riga di esempio (che contenga quei 3/4 campi che ti servono) ed un power bi ad esso collegato con il tuo tentativo fatto.

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

Autore del topic
viaggiatrice
Messaggi: 44 | Topic creati
Iscritto il: mar 6 feb 2024, 7:32
Ringraziato: 3 volte

Definire data inizio e data fine

Messaggio da viaggiatrice »

Ciao Andrea,

non sapevo di EARLIER grazie per il chiarimento.

Ho provato a ricreare il tutto un excel e .pbix.

Nella tabella viene fuori una riga per ogni data di inzio e fine mentre avrei bisogno di avere, es per l'ordine che termina con 4146, la data di inizio più vecchia e la data di fine più giovane.

Quindi inizio 03/01/2024 18.50 e fine 04/01/2024 alle 03.15.50

Per conteggiare il numero di eventi differenti (grafico a torta) non ho problemi perché uso il conteggio distinto.

Codice: Seleziona tutto

NuovaTabella =
SUMMARIZE (
    Manutenzioni,
    Manutenzioni[Ordine],
    "InizioFT", MINX (
                    ADDCOLUMNS (
                        FILTER (
                            Manutenzioni,
                            Manutenzioni[Ordine] = Manutenzioni[Ordine]
                        ),
                        "InizioFT", Manutenzioni[Inizio_fermo_tecnico]
                    ),
                    [InizioFT]
                ),
    "FineFT", MAXX (
                    ADDCOLUMNS (
                        FILTER (
                            Manutenzioni,
                            Manutenzioni[Ordine] = Manutenzioni[Ordine]
                        ),
                        "FineFT", Manutenzioni[Fine_fermo_tecnico]
                    ),
                    [FineFT]
                )
)
Credo, dato l'esito di questa DAX, di non aver compreso però la possibile soluzione :(
Allegati
esempio2.pbix
(64.03 KiB) Scaricato 2 volte
ESEMPIO.xlsx
(10.3 KiB) Scaricato 3 volte
Avatar utente

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

Definire data inizio e data fine

Messaggio da Andrea90 »

@viaggiatrice,

Per intenderci, questo è l'output che vorresti ottenere dalla tabella calcolata?

Immagine

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

Autore del topic
viaggiatrice
Messaggi: 44 | Topic creati
Iscritto il: mar 6 feb 2024, 7:32
Ringraziato: 3 volte

Definire data inizio e data fine

Messaggio da viaggiatrice »

Andrea90 ha scritto: gio 21 mar 2024, 12:10 Per intenderci, questo è l'output che vorresti ottenere dalla tabella calcolata?
Esattamente
Avatar utente

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

Definire data inizio e data fine

Messaggio da Andrea90 »

@viaggiatrice,

Io ti consiglio di abilitare, se non l'hai già fatto, la Query View... è una funzionalità in anteprima che devi abilitare manualmente:
https://learn.microsoft.com/en-us/power ... query-view

Questa modalità ti permette di vedere le tabelle risultanti dalle query dax che crei.

Ad esempio scrivi:

Codice: Seleziona tutto

 EVALUATE SUMMARIZE(Foglio1, Foglio1[Ordine Produzione])
E vedrai comparire la lista univoca dei tuoi ordini di produzione.

Puoi anche costruirti delle misure (solo per la query view o anche da aggiungere direttamente al modello in automatico premendo l'apposito pulsante che compare) utilizzando la sintassi:

Codice: Seleziona tutto

DEFINE 
	MEASURE
	Foglio1[InizioFt] = MIN( Foglio1[Inizio Fermo Tecnico] )
	EVALUATE ...
Comunque questo strumento ti può tornare utile per costruire pezzo per pezzo la tua tabella calcolata.

Ad esempio ti avevo scritto:

"Si utilizza sempre l'accoppiata ADDCOLUMNS() + SUMMARIZE()"

Perché non puoi utilizzare SUMMARIZE per creare nuove colonne. Nella seconda sintassi che mi hai girato stai però continuando ad utilizzare SUMMARIZE per creare colonne, mentre la sua unica funzione dovrebbe essere quella di preparare solo le "dimensioni" della tabella calcolata. I valori numerici li generi con ADDCOLUMNS()... dunque la sintassi dovrebbe essere:

Codice: Seleziona tutto

    ADDCOLUMNS(
		SUMMARIZE(Foglio1, Foglio1[Ordine Produzione]),
		"nome_misura_1", <misura o formula DAX>,
		"nome_misura_2", <misura o formula DAX>
	)
Il codice per ottenere quello che chiedi è in realtà semplice, non hai bisogno di utilizzare FILTER cercando di intercettare solo le righe di ordine, bla bla ... perché questo lo fa tutto in automatico il sistema se utilizzi delle misure o se scrivi la formula DAX utilizzando CALCULATE. Perché come ti dicevo quando c'è un contesto iterativo (uno degli argomenti che ti avevo suggerito di studiare) e tu utilizzi una misura (o una formula con CALCULATE) si attiva il Context Transition, dove tutte le dimensioni che hai messo sulle righe diventano il contesto filtro (altro argomento che ti ho suggerito di studiare) che modificano il campo di applicazione della tua misura.

Quindi non hai bisogno di filtrare la tabella per l'ordine di produzione che hai sulla riga, perché lo prenderà già in automatico quando calcolerai il MIN (o MAX) del campo che contiene la data di inizio e fine intervento.

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

Autore del topic
viaggiatrice
Messaggi: 44 | Topic creati
Iscritto il: mar 6 feb 2024, 7:32
Ringraziato: 3 volte

Definire data inizio e data fine

Messaggio da viaggiatrice »

Ciao Andrea, intanto grazie per le spiegazioni e per la DAX View che non conoscevo proprio.
Andrea90 ha scritto: gio 21 mar 2024, 14:14 Quindi non hai bisogno di filtrare la tabella per l'ordine di produzione che hai sulla riga, perché lo prenderà già in automatico quando calcolerai il MIN (o MAX) del campo che contiene la data di inizio e fine intervento.
Non capisco perché non devo filtrare l'ordine però se a me serve la data inizio e fine di ogni specifico ordine e non in generale.
Avatar utente

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

Definire data inizio e data fine

Messaggio da Andrea90 »

@viaggiatrice,
viaggiatrice ha scritto: ven 22 mar 2024, 7:54 Non capisco perché non devo filtrare l'ordine
Perché hai bisogno di scrivere:

Codice: Seleziona tutto

FILTER (
                            Manutenzioni,
                            Manutenzioni[Ordine] = Manutenzioni[Ordine]
                        )
Mentre rispondi a questa domanda ti invito a riflettere di più su questo punto:
Andrea90 ha scritto: gio 21 mar 2024, 14:14 Perché come ti dicevo quando c'è un contesto iterativo (uno degli argomenti che ti avevo suggerito di studiare) e tu utilizzi una misura (o una formula con CALCULATE) si attiva il Context Transition, dove tutte le dimensioni che hai messo sulle righe diventano il contesto filtro (altro argomento che ti ho suggerito di studiare) che modificano il campo di applicazione della tua misura.
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
Rispondi