Importare dati da sql in power query: meglio una vista o tabelle separate L’argomento è risolto
Moderatore: Utilizzo_prof_Excel
-
- Messaggi: 24 | Topic creati
- Iscritto il: mer 22 lug 2020, 21:25
- Luogo: Rimini
- Ringraziato: 2 volte
Importare dati da sql in power query: meglio una vista o tabelle separate
Buongiorno a tutti una nuova domanda per voi: per alimentare una power pivot qual'è, secondo voi, la strada più corretta:
1 creare una vista su sql con i dati già pronti o importare le singole tabelle e poi collegarle in gestione modello dati o power query?
2 Ipotizzando di aver creato una vista su sql (query di unione) tra due viste (si parla sempre di dati di vendita), vi risulta che ci sia un limite di nr campi importabili su power query? Ve lo chiedo perchè ho una situazione dove ho aggiunto un nuovo campo su due viste che alimentano la union, ma questo nuovo non viene importato in power pivot esistenti, neppure creando una power query ex novo, avete qualche suggerimento?
Grazie per l'attenzione.
1 creare una vista su sql con i dati già pronti o importare le singole tabelle e poi collegarle in gestione modello dati o power query?
2 Ipotizzando di aver creato una vista su sql (query di unione) tra due viste (si parla sempre di dati di vendita), vi risulta che ci sia un limite di nr campi importabili su power query? Ve lo chiedo perchè ho una situazione dove ho aggiunto un nuovo campo su due viste che alimentano la union, ma questo nuovo non viene importato in power pivot esistenti, neppure creando una power query ex novo, avete qualche suggerimento?
Grazie per l'attenzione.
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Importare dati da sql in power query: meglio una vista o tabelle separate
Ciao Alex63 , allora:
1) premesso che, potendo, dal punto di vista prestazionale è sempre meglio fare lavorare il server di database piuttosto che la macchina locale per le operazioni di ETL, ci sono varie considerazioni da fare: se tu importi una vista già elaborata, con JOIN e tutto quanto, avrai una tabella monolitica; se importi i vari componenti di uno schema a stella, avrai invece un modello di dati vero e proprio. Tutto dipende dalle analisi da fare: spesso le tabelle che io ho definito "monolitiche", che quindi contengono tutti i campi al loro interno, magari introducendo una replicazione dei dati su più righe, sono difficili da utilizzare e possono richiedere del codice DAX complicato anche per semplici indicatori. Altre volte non è così.
In generale, il consiglio è sempre quello di utilizzare un modello a stella in Power Pivot, per garantire la massima flessibilità di analisi.
2) Non c'è un limite fisico di colonne importabili, e il problema che descrivi è molto strano: non è che la colonna viene effettivamente importata, ma poi in un passaggio successivo della query viene scartata?
1) premesso che, potendo, dal punto di vista prestazionale è sempre meglio fare lavorare il server di database piuttosto che la macchina locale per le operazioni di ETL, ci sono varie considerazioni da fare: se tu importi una vista già elaborata, con JOIN e tutto quanto, avrai una tabella monolitica; se importi i vari componenti di uno schema a stella, avrai invece un modello di dati vero e proprio. Tutto dipende dalle analisi da fare: spesso le tabelle che io ho definito "monolitiche", che quindi contengono tutti i campi al loro interno, magari introducendo una replicazione dei dati su più righe, sono difficili da utilizzare e possono richiedere del codice DAX complicato anche per semplici indicatori. Altre volte non è così.
In generale, il consiglio è sempre quello di utilizzare un modello a stella in Power Pivot, per garantire la massima flessibilità di analisi.
2) Non c'è un limite fisico di colonne importabili, e il problema che descrivi è molto strano: non è che la colonna viene effettivamente importata, ma poi in un passaggio successivo della query viene scartata?
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 24 | Topic creati
- Iscritto il: mer 22 lug 2020, 21:25
- Luogo: Rimini
- Ringraziato: 2 volte
Importare dati da sql in power query: meglio una vista o tabelle separate
Ciao Enrico, per il punto uno chiara la risposta, mentre per il punto 2 anche io non riesco a capire il motivo della mancanza del campo.
Nelle due singole viste il campo è stato aggiunto (stessa posizione) e lo vedo se lancio una select delle singole viste mentre se lancio una select della union (vedi sotto) il campo non è presente.
Nelle due singole viste il campo è stato aggiunto (stessa posizione) e lo vedo se lancio una select delle singole viste mentre se lancio una select della union (vedi sotto) il campo non è presente.
Codice: Seleziona tutto
SELECT *
FROM [dbo].[SPEDIZIONE] AS s
WHERE s.[QtaSpeditaNonFatturata] > 0
UNION ALL
SELECT *
FROM [dbo].[FATTURA]
Ultima modifica di Enrico Galli il mar 11 ago 2020, 22:48, modificato 1 volta in totale.
-
Autore del topic - Messaggi: 24 | Topic creati
- Iscritto il: mer 22 lug 2020, 21:25
- Luogo: Rimini
- Ringraziato: 2 volte
Importare dati da sql in power query: meglio una vista o tabelle separate
Scusa rettifico fino alla union il campo è presente, lo perdo nella creazione della power query
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Importare dati da sql in power query: meglio una vista o tabelle separate
Mi spiace, ma oltre a quello che ho già ipotizzato, altro non riesco a dirti. Puoi almeno mettere il codice della query, così capiamo se c'è qualche inghippo?
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 24 | Topic creati
- Iscritto il: mer 22 lug 2020, 21:25
- Luogo: Rimini
- Ringraziato: 2 volte
Importare dati da sql in power query: meglio una vista o tabelle separate
Queste sono le tre viste usate per alimentare la base dati.
- Allegati
-
- Viste SQL.txt
- (10.2 KiB) Scaricato 26 volte
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Importare dati da sql in power query: meglio una vista o tabelle separate
Scusa, mi sono spiegato male. Intendevo il codice della Query di Power Query, non l'SQL
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 24 | Topic creati
- Iscritto il: mer 22 lug 2020, 21:25
- Luogo: Rimini
- Ringraziato: 2 volte
Importare dati da sql in power query: meglio una vista o tabelle separate
Intendi questo:
let
Origine = Sql.Database("dbserver", "newfactor_bi"),
dbo_Vendite_Statistiche = Origine{[Schema="dbo",Item="Vendite_Statistiche"]}[Data]
in
dbo_Vendite_Statistiche
let
Origine = Sql.Database("dbserver", "newfactor_bi"),
dbo_Vendite_Statistiche = Origine{[Schema="dbo",Item="Vendite_Statistiche"]}[Data]
in
dbo_Vendite_Statistiche
-
- Messaggi: 87 | Topic creati
- Iscritto il: lun 29 giu 2020, 17:56
- Ringraziato: 27 volte
- Contatta:
Importare dati da sql in power query: meglio una vista o tabelle separate
Ciao Alex63,
ti riporto la mia esperienza personale, considera che lavoro con centinaia di persone e tabelle che vanno dai 10.000 record ai 300 mln, quindi da qui le mie considerazioni.. allora:
1) Quoto Enrico quando scrive che tendenzialmente è più corretto far lavorare il SQL, ma fai attenzione a una cosa molto importante:
- Il costo delle licenze di SQL è relativo al numero di processori che hai installati sulla macchina.
- Quindi se il tuo foglio di excel lavora su un'altra macchina come penso, utilizzare le risorse di una macchina esterna, se possibile, è meglio, in quanto andrai a risparmiare soldini in possibili costosi upgrade al SQL.
- Ciò nonostante se ti trovi in una condizione di possibilità hardware che può supportare senza problemi quel che stai facendo, oppure lavorare in SQL ti da poi un beneficio comune a n report esterni allora l'ETL fallo ad occhi chiusi in SQL, è sicuramente migliore di PowerQuery "anche se meno intuitivo nello sviluppo".
2) Vedo che usi un driver OLEDB, li usavo anche io un tempo, te li sconsiglio, vai di driver ODBC versione 13 o 17.
- Sono più veloci
- Se un domani cambi nome all'istanza con il driver ODBC ti basterà ripuntare lui (al contrario con l'OLEDB ti tocca ripassarti tutte le query di tutti i report)
3) A mio avviso il flusso ottimale è sempre questo
- SQL => PowerQuery => PowerPivot
- Questo a prescindere che tu faccia trasformazioni o no in PowerQuery, dalle esperienze che ho avuto, il flusso così costruito risulta più stabile e non ti precludi mai la possibilità di fare qualche accortezza in PowerQuery in un futuro (da non escludere mai).
4) In riferimento al tuo problema specifico, se ho ben inteso quel che sta succedendo è una furbata di SQL...
- Quando modifichi una Tabella oppure una View, le View che leggono da queste sorgenti devono essere rigenerate anche se l'ultima View fa un Select *
- La memoria del Select * è sempre popolata con il set di campi presente prima della tua ultima modifica, quindi per far comparire il nuovo campo devi rinfrescare la cache della View..
- Quindi fai un bel ALTER alla View finale e poi fai ESEGUI, così facendo dovrebbe poi funzionare
Per il punto 4 se non funziona o ho capito male il problema fai sapere..
A presto
ti riporto la mia esperienza personale, considera che lavoro con centinaia di persone e tabelle che vanno dai 10.000 record ai 300 mln, quindi da qui le mie considerazioni.. allora:
1) Quoto Enrico quando scrive che tendenzialmente è più corretto far lavorare il SQL, ma fai attenzione a una cosa molto importante:
- Il costo delle licenze di SQL è relativo al numero di processori che hai installati sulla macchina.
- Quindi se il tuo foglio di excel lavora su un'altra macchina come penso, utilizzare le risorse di una macchina esterna, se possibile, è meglio, in quanto andrai a risparmiare soldini in possibili costosi upgrade al SQL.
- Ciò nonostante se ti trovi in una condizione di possibilità hardware che può supportare senza problemi quel che stai facendo, oppure lavorare in SQL ti da poi un beneficio comune a n report esterni allora l'ETL fallo ad occhi chiusi in SQL, è sicuramente migliore di PowerQuery "anche se meno intuitivo nello sviluppo".
2) Vedo che usi un driver OLEDB, li usavo anche io un tempo, te li sconsiglio, vai di driver ODBC versione 13 o 17.
- Sono più veloci
- Se un domani cambi nome all'istanza con il driver ODBC ti basterà ripuntare lui (al contrario con l'OLEDB ti tocca ripassarti tutte le query di tutti i report)
3) A mio avviso il flusso ottimale è sempre questo
- SQL => PowerQuery => PowerPivot
- Questo a prescindere che tu faccia trasformazioni o no in PowerQuery, dalle esperienze che ho avuto, il flusso così costruito risulta più stabile e non ti precludi mai la possibilità di fare qualche accortezza in PowerQuery in un futuro (da non escludere mai).
4) In riferimento al tuo problema specifico, se ho ben inteso quel che sta succedendo è una furbata di SQL...
- Quando modifichi una Tabella oppure una View, le View che leggono da queste sorgenti devono essere rigenerate anche se l'ultima View fa un Select *
- La memoria del Select * è sempre popolata con il set di campi presente prima della tua ultima modifica, quindi per far comparire il nuovo campo devi rinfrescare la cache della View..
- Quindi fai un bel ALTER alla View finale e poi fai ESEGUI, così facendo dovrebbe poi funzionare
Per il punto 4 se non funziona o ho capito male il problema fai sapere..
A presto
Vuoi approfondire le tue conoscenze sul pacchetto Microsoft 365?
Vieni a scoprire i corsi gratuiti nel mio canale youtube:
https://www.youtube.com/lodovicodincau
Vieni a scoprire i corsi gratuiti nel mio canale youtube:
https://www.youtube.com/lodovicodincau
-
Autore del topic - Messaggi: 24 | Topic creati
- Iscritto il: mer 22 lug 2020, 21:25
- Luogo: Rimini
- Ringraziato: 2 volte
Importare dati da sql in power query: meglio una vista o tabelle separate
Vi ringrazio per i preziosi consigli vi farò sapere se il problema del punto 4 si risolve.
State facendo un grande lavoro di divulgazione..
State facendo un grande lavoro di divulgazione..