Calcolare i minuti in un intervallo di tempo accavallato L’argomento è risolto
-
- Messaggi: 44 | Topic creati
- Iscritto il: mar 6 feb 2024, 7:32
- Ringraziato: 3 volte
Calcolare i minuti in un intervallo di tempo accavallato
Ti ringrazio per la spiegazione.
Purtroppo non ne riesco a venire a capo in PowerBi, come già anticipato nel messaggio prima. In Excel mi pare più semplice ma non vorrei orientarmi li.
Non mi piace il "mi dici la formula" semplicemente perché qui come lì sono per imparare (se hai letto ho fatto poi domande per capire la natura della formula). Non ho altro modo per poterla applicare in PowerBi.
Ora, mi piacerebbe seguire la tua propsota iniziale ma, come già anticipato, non riesco ad applicarla. Se hai modo di essere più chiaro allora potrò provarci ancora. Grazie
Purtroppo non ne riesco a venire a capo in PowerBi, come già anticipato nel messaggio prima. In Excel mi pare più semplice ma non vorrei orientarmi li.
Non mi piace il "mi dici la formula" semplicemente perché qui come lì sono per imparare (se hai letto ho fatto poi domande per capire la natura della formula). Non ho altro modo per poterla applicare in PowerBi.
Ora, mi piacerebbe seguire la tua propsota iniziale ma, come già anticipato, non riesco ad applicarla. Se hai modo di essere più chiaro allora potrò provarci ancora. Grazie
-
- Messaggi: 2480 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 695 volte
- Contatta:
Calcolare i minuti in un intervallo di tempo accavallato
Potrà anche non piacerti, ma credo che tu non abbia aperto la discussione nella sezione formule inizialmente, ma in quella Power BI & Power Query, poi ti sarà stata spostata li perché hai espressamente richiesto una formula excel da poter eventualmente "riportare" in Power BI.viaggiatrice ha scritto: ↑gio 15 feb 2024, 16:55 Non mi piace il "mi dici la formula" semplicemente perché qui come lì sono per imparare (se hai letto ho fatto poi domande per capire la natura della formula).
E io torno a suggerirti di non applicare questa logica (non per questo caso specifico, ma proprio in generale). Power BI ed Excel sono due strumenti diversi, se una cosa funziona in uno strumento, non è detto che funzioni anche nell'altro. E se anche funziona, non è detto che stia lavorando nel modo corretto.
E ti ho poi fornito un'osservazione su dove quella formula che hai costruito può "cozzare" con il sistema Power BI.
Puoi ottimizzare quel codice? Credo di si...
Puoi seguire un'altra strada? probabilmente si, ad esempio quella che ti avevo fornito all'inizio.
Poi su questo secondo punto, hai scritto su Forum Excel che "ho provato a risolverlo con PowerBi e relativo PowerQuery ma senza esito", ma non è propriamente corretto perché dal mio ultimo messaggio inviato (prima che tu scrivessi la stessa richiesta su Forum Excel) non hai più chiesto nulla come suggerimenti.
Giusto come appunto, qui siamo "easy" sul tema, ma su Forum Excel è vietato il crossposting (te lo scrivono anche nel messaggio di benvenuto), quindi occhio a tenere discussioni aperte su due forum. Lo dico più per te nel caso in cui venissi "sanzionata" su Forum Excel...
Andrea
-
Autore del topic - Messaggi: 44 | Topic creati
- Iscritto il: mar 6 feb 2024, 7:32
- Ringraziato: 3 volte
Calcolare i minuti in un intervallo di tempo accavallato
Buongiorno Andrea, non sono stata spostata (v. aggiornamento ultimo post).
Ad ogni modo, se esiste un'altra soluzione (quella che hai indicato), non riesco ad applicarla.
Ora capito quello che intendi..il punto è che il mio problema non l'ho risolto e, ancor peggio, non ho imparato molto (su powerbi...su Excel ho capito molto bene il concetto).
Potresti meglio spiegarmi la tua idea di risoluzione?
Grazie
Ad ogni modo, se esiste un'altra soluzione (quella che hai indicato), non riesco ad applicarla.
Ora capito quello che intendi..il punto è che il mio problema non l'ho risolto e, ancor peggio, non ho imparato molto (su powerbi...su Excel ho capito molto bene il concetto).
Potresti meglio spiegarmi la tua idea di risoluzione?
Grazie
-
- Messaggi: 2480 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 695 volte
- Contatta:
Calcolare i minuti in un intervallo di tempo accavallato
@viaggiatrice,
Ripartiamo.
Premetto che non vedo cosa tu abbia elaborato fino ad ora, quindi se hai un file demo (quello allegato va più che bene), collegalo ad un file di Power BI e mostra i passaggi fatti di volta in volta che smarchiamo i seguenti punti:
Punto (1)
Punto (2)
Punto (3)
Andrea
Ripartiamo.
Premetto che non vedo cosa tu abbia elaborato fino ad ora, quindi se hai un file demo (quello allegato va più che bene), collegalo ad un file di Power BI e mostra i passaggi fatti di volta in volta che smarchiamo i seguenti punti:
Punto (1)
Questo lo fai in Power Query.
Punto (2)
Dovresti avere una tabella come la seguente:Andrea90 ha scritto: ↑lun 12 feb 2024, 16:44 Poi ti crei una tabella che contenga "l'anagrafica ore" (formato 24h) dove per ogni riga avrai un orario diverso con un incremento scelto da te (ad esempio se ti bastano i minuti puoi scrivere: 00:01:00, 00:02:00, ecc). Se vuoi un livello al secondo ovviamente dovrai aumentare il numero di righe. Ci aggiungi poi una colonna che identifica in che turno si trova quello specifico orario.
Punto (3)
Questo concetto l'hai compreso? Altrimenti spiego meglio..
Andrea
-
Autore del topic - Messaggi: 44 | Topic creati
- Iscritto il: mar 6 feb 2024, 7:32
- Ringraziato: 3 volte
Calcolare i minuti in un intervallo di tempo accavallato
Ciao Andrea,
allora ho creato la tabella di anagrafica e associato ad ogni minuto il turno.
Allego il file su cui sto lavorando Non ho capito il punto 3, ci ho ragionato più volte ma non l'ho compreso. Come posso filtrare il mio orario di inizio con i minuti della tabella anagrafica?
allora ho creato la tabella di anagrafica e associato ad ogni minuto il turno.
Allego il file su cui sto lavorando Non ho capito il punto 3, ci ho ragionato più volte ma non l'ho compreso. Come posso filtrare il mio orario di inizio con i minuti della tabella anagrafica?
-
- Messaggi: 2480 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 695 volte
- Contatta:
Calcolare i minuti in un intervallo di tempo accavallato
Quello che devi fare è in realtà il contrario...viaggiatrice ha scritto: ↑lun 19 feb 2024, 8:03 Come posso filtrare il mio orario di inizio con i minuti della tabella anagrafica?
Parti dalla tua tabella [TestOra] e calcolati una colonna calcolata seguendo questi step:
1) Crea una variabile che tenga in memoria l'orario di inizio prendendo il relativo campo (l'hai chiamato [Inizio])
2) Crea una variabile che tenga in memoria l'orario di fine prendendo il relativo campo (l'hai chiamato [Fine])
3) Filtra la tua tabella di anagrafica (devi usare FILTER) utilizzando due condizioni legate da un operatore AND(). Condizione 1: L'orario deve essere >= alla prima variabile. Condizione 2: L'orario deve essere <= alla seconda variabile. Tutto questo all'interno di un CALCULATETABLE che selezioni il valore del campo [Turno] corretto (dipende se stai calcolando i minuti del Mattino, Pomeriggio o Notte).
Quello che ottieni dal passaggio 3 è una tabella con N righe, ogni riga rappresenta un secondo. Conta le righe di questa tabella ed otterrai i secondi intercorsi nel turno che hai scelto relativi al range [Inizio] - [Fine].
Hai tenuto l'orario della tabella TestOra in hh:mm:ss pertanto anche le righe della anagrafica dovranno tenere conto dei secondi e non solo dei minuti.
Andrea
-
Autore del topic - Messaggi: 44 | Topic creati
- Iscritto il: mar 6 feb 2024, 7:32
- Ringraziato: 3 volte
Calcolare i minuti in un intervallo di tempo accavallato
Ciao Andrea...[TestOra]?
Ho le tabelle TepiLavoro e TabellaMinuti
Se ho ben capito i passaggi devo fare il lavoro su TempiLavoro....
Ci provo anche se la vedo ostica per me
Ho le tabelle TepiLavoro e TabellaMinuti
Se ho ben capito i passaggi devo fare il lavoro su TempiLavoro....
Ci provo anche se la vedo ostica per me
-
- Messaggi: 2480 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 695 volte
- Contatta:
Calcolare i minuti in un intervallo di tempo accavallato
Perdona, intendevo [TempiLavoro]
Procedi a step, parti dalla colonna per il turno "Mattina" e crea la formula in DAX seguendo gli step indicati. Se ti fermi in un punto allega la funzione DAX che hai realizzato così si lavora su quella.
Andrea
-
Autore del topic - Messaggi: 44 | Topic creati
- Iscritto il: mar 6 feb 2024, 7:32
- Ringraziato: 3 volte
Calcolare i minuti in un intervallo di tempo accavallato
Ti ringrazio per la tua pazienza enorme
Allora ho creato all'interno della tabella "TempiLavoro" la colonna "OrarioFine" e "Orario Inizio" utilizzando
e
Ora se ho ben capito dovrei fare una nuova tabella con la funzione CALCULATE e FILTER per filtrare il tempo di ora inizio con il valore della colonna [Turno] della tabella 'TabellMinuti'
Ho provato ad abozzare qualcosa così ma mi sono fermata
Allora ho creato all'interno della tabella "TempiLavoro" la colonna "OrarioFine" e "Orario Inizio" utilizzando
Codice: Seleziona tutto
OrarioFine = TempiLavoro[Fine]
Codice: Seleziona tutto
OrarioInizio = TempiLavoro[Inizio]
Ho provato ad abozzare qualcosa così ma mi sono fermata
Codice: Seleziona tutto
Nuovatabella =
CALCULATE (
FILTER (
TabellaMinuti,
TabellaMinuti[Turno] =
IF (
TempiLavoro[OrarioInizio]>=
-
- Messaggi: 2480 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 695 volte
- Contatta:
Calcolare i minuti in un intervallo di tempo accavallato
@viaggiatrice,
Tutto va fatto in una singola espressione, non hai bisogno di creare più colonne. Utilizza VAR per salvare il valore di un dato campo all'interno di una variabile da riutilizzare nel codice a valle:
Ora in result devi filtrare la tabella che contiene l'anagrafica ore. Quindi ok che scrivi:
FILTER ( TabellaMinuti, ... )
Ma come argomento condizione (il secondo) devi verificare se il campo che contiene hh:mm:ss nella tabella anagrafica tempi è sia maggiore del tuo TimeStart, che inferiore del tuo TimeEnd. Dunque dovrebbe essere qualcosa di simile:
Quel "&&" è l'operatore logico AND(), avresti potuto anche scrivere:
Con [Value] che contiene i valori corretti dei vari tempi separati ciascuno da 1 secondo (come quelli che ti avevo mostrato in un'immagine qualche messaggio fa).
Questo codice ti restituisce la [TabellaMinuti] filtrata, ma non tiene conto del turno per il quale vuoi calcolare i tempi. Nel messaggio precedente ti avevo indicato di inserire questa formula dentro un CALCULATETABLE() perché devi cambiare il contesto filtro nel quale stai valorizzando questa misura.
CALCULATE restituisce un valore scalare, CALCULATETABLE restituisce una tabella (e tu hai infatti bisogno di una tabella).
Perché l'ultimo passaggio sarà appunto quello di contare le righe di questa tabella, e per farlo dovrai utilizzare COUNTROWS().
Vedi se così ti risulta più chiara la logica.
Andrea
Tutto va fatto in una singola espressione, non hai bisogno di creare più colonne. Utilizza VAR per salvare il valore di un dato campo all'interno di una variabile da riutilizzare nel codice a valle:
Codice: Seleziona tutto
Turno Mattina =
VAR TimeStart = TempiLavoro[Inizio]
VAR TimeEnd = TempiLavoro[Fine]
VAR result = ....
RETURN result
FILTER ( TabellaMinuti, ... )
Ma come argomento condizione (il secondo) devi verificare se il campo che contiene hh:mm:ss nella tabella anagrafica tempi è sia maggiore del tuo TimeStart, che inferiore del tuo TimeEnd. Dunque dovrebbe essere qualcosa di simile:
Codice: Seleziona tutto
TabellaMinuti[Value] >= TimeStart && TabellaMinuti[Value] <= TimeEnd
Codice: Seleziona tutto
AND( TabellaMinuti[Value] >= TimeStart, TabellaMinuti[Value] <= TimeEnd)
Questo codice ti restituisce la [TabellaMinuti] filtrata, ma non tiene conto del turno per il quale vuoi calcolare i tempi. Nel messaggio precedente ti avevo indicato di inserire questa formula dentro un CALCULATETABLE() perché devi cambiare il contesto filtro nel quale stai valorizzando questa misura.
CALCULATE restituisce un valore scalare, CALCULATETABLE restituisce una tabella (e tu hai infatti bisogno di una tabella).
Perché l'ultimo passaggio sarà appunto quello di contare le righe di questa tabella, e per farlo dovrai utilizzare COUNTROWS().
Vedi se così ti risulta più chiara la logica.
Andrea