problema power query L’argomento è risolto

Non è propriamente un programma di BI, ma nelle sue versioni più recenti anche Excel può fare grandi cose!

Moderatore: Utilizzo_prof_Excel

Rispondi

maria60
Messaggi: 3 | Topic creati
Iscritto il: mar 9 mar 2021, 8:40

problema power query

Messaggio da maria60 »

Buongiorno sono mesi che utilizzo il file e fino a pochi giorni fa tutto ok ... nell'estrapolare i dati dal sito web si verifica una condizione per cui la query non va a buon fine ... il file allegato e' aggiornato fino al giorno 5/03 , quando effettuo l'aggiornamento nel foglio Rad.Solare tramite il botton "AGGIORNAMENTO TOTALE" il file non viene aggiornato in quanto la query va in errore in quanto nei giorni successivi dal sito in cui il file estrapola i dati (csv) non ci sono valori ...
come bypassare tale condizione (pardon la mia ignoranza ... forse aggingere nella query qualche istruzione ? ) .
grazie Maria60

Codice: Seleziona tutto

let

  //individua selezione

  //  DataFinaleCheck = Excel.CurrentWorkbook(){[Name="data.fine"]}[Content][Column1]{0},//QUESTA LEGGE -1 GG

      DataFinaleCheck = Excel.CurrentWorkbook(){[Name="data.fine"]}[Content][Column1]{0}+#duration(1,0,0,0),//QUESTA LEGGE GG OK

 Selezione = Excel.CurrentWorkbook(){[Name="Selettore"]}[Content][Column1]{0},
  //individuo data finale
    DataFinale = if DataFinaleCheck is null
      then
          Date.From(DateTimeZone.LocalNow())
      else
          Date.From(DataFinaleCheck),

 
 //individuo data iniziale

    NumeroGiorni = Excel.CurrentWorkbook(){[Name="NumeroGiorni"]}[Content][Column1]{0},


  //  DataInizialeCheck = Excel.CurrentWorkbook(){[Name="DataIniziale"]}[Content][Column1]{0}+#duration(1,0,0,0),
    DataInizialeCheck = Excel.CurrentWorkbook(){[Name="DataIniziale"]}[Content][Column1]{0},
     


    DataIniziale = if Selezione = "DataIniziale"
      then
          Date.From(DataInizialeCheck)
      else
          Date.From(DataFinale - #duration(NumeroGiorni,0,0,0)),
  //individua durata in giorni
    Durata = Number.From(DataFinale - DataIniziale),
  //creo lista date
   ListaDate  = List.Dates(DataIniziale, Durata + 1, #duration(1,0,0,0)),



   
    #"Conversione in tabella" = Table.FromList(ListaDate, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Modificato tipo" = Table.TransformColumnTypes(#"Conversione in tabella",{{"Column1", type date}}),
    #"Rinominate colonne" = Table.RenameColumns(#"Modificato tipo",{{"Column1", "Data"}}),
    Anno = Table.AddColumn(#"Rinominate colonne", "Anno", each Date.Year([Data]), type text),
    Mese = Table.AddColumn(Anno, "Mese", each 
        if Date.Month([Data]) < 10 then "0" & Number.ToText(Date.Month([Data])) else Date.Month([Data]), type text),
    Giorno = Table.AddColumn(Mese, "Giorno", each 
    if Date.Day([Data]) < 10 then "0" & Number.ToText(Date.Day([Data])) else Date.Day([Data]), type text),
    ModificaFormato = Table.TransformColumnTypes(Giorno,{{"Anno", type text},{"Mese", type text},{"Giorno", type text}}),
    Codice = Table.AddColumn(ModificaFormato, "Codice", each [Anno] & [Mese] & [Giorno]),
    #"Rimosse altre colonne" = Table.SelectColumns(Codice,{"Data", "Codice"}),
    #"Modificato tipo1" = Table.TransformColumnTypes(#"Rimosse altre colonne",{{"Codice", type text}}),
    Link = Table.AddColumn(#"Modificato tipo1", "Link",each "http://cemec.arpacampania.it/meteoambientecampania/prodotti/meteo/arpac_dati_centraline_" & [Codice] & "_meteo.csv "),
    #"Funzione personalizzata richiamata" = Table.AddColumn(Link, "Tabelle", each EstrazioneDati([Link])),
    #"Tabella Tabelle espansa" = Table.ExpandTableColumn(#"Funzione personalizzata richiamata", "Tabelle", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6"}, {"Tabelle.Column1", "Tabelle.Column2", "Tabelle.Column3", "Tabelle.Column4", "Tabelle.Column5", "Tabelle.Column6"}),
    #"Rinominate colonne1" = Table.RenameColumns(#"Tabella Tabelle espansa",{{"Tabelle.Column1", "Stazione"}, {"Tabelle.Column2", "Descrizione"}, {"Tabelle.Column3", "Sensore"}, {"Tabelle.Column4", "Um"}, {"Tabelle.Column5", "Data_Ora"}, {"Tabelle.Column6", "Valore"}}),
    #"Filtrate righe" = Table.SelectRows(#"Rinominate colonne1", each ([Valore] <> "valore")),
    #"Sostituito valore" = Table.ReplaceValue(#"Filtrate righe",".",",",Replacer.ReplaceText,{"Valore"}),
    #"Modificato tipo2" = Table.TransformColumnTypes(#"Sostituito valore",{{"Valore", type number}}),
    #"Filtrate righe1" = Table.SelectRows(#"Modificato tipo2", each ([Sensore] = "RadSG" or [Sensore] = "Temperatura aria")),
    #"Rimosse altre colonne1" = Table.SelectColumns(#"Filtrate righe1",{"Descrizione", "Sensore", "Data_Ora", "Valore"}),
    #"Riordinate colonne" = Table.ReorderColumns(#"Rimosse altre colonne1",{"Descrizione", "Data_Ora", "Sensore", "Valore"}),
    #"Colonna trasformata tramite Pivot" = Table.Pivot(#"Riordinate colonne", List.Distinct(#"Riordinate colonne"[Sensore]), "Sensore", "Valore"),
    #"Sostituito valore1" = Table.ReplaceValue(#"Colonna trasformata tramite Pivot","+01","",Replacer.ReplaceText,{"Data_Ora"}),
    #"Duplicata colonna" = Table.DuplicateColumn(#"Sostituito valore1", "Data_Ora", "Data_Ora - Copia"),
    #"Testo troncato" = Table.TransformColumns(#"Duplicata colonna",{{"Data_Ora - Copia", Text.Trim, type text}}),
    #"Suddividi colonna in base alla posizione" = Table.SplitColumn(#"Testo troncato", "Data_Ora - Copia", Splitter.SplitTextByPositions({0, 10}, false), {"Data_Ora - Copia.1", "Data_Ora - Copia.2"}),
    #"Modificato tipo3" = Table.TransformColumnTypes(#"Suddividi colonna in base alla posizione",{{"Data_Ora - Copia.1", type date}, {"Data_Ora - Copia.2", type time}}),
    #"Rinominate colonne2" = Table.RenameColumns(#"Modificato tipo3",{{"Data_Ora - Copia.1", "datas"}}),
    #"Rinominate colonne3" = Table.RenameColumns(#"Rinominate colonne2",{{"Data_Ora - Copia.2", "ora"}}),
    #"Rinominate colonne4" = Table.RenameColumns(#"Rinominate colonne3",{{"Data_Ora", "data+ora"}}),
    #"Rinominate colonne5" = Table.RenameColumns(#"Rinominate colonne4",{{"Descrizione", "stazione meteo"}, {"Temperatura aria", "temp"}}),
    #"Rinominate colonne6" = Table.RenameColumns(#"Rinominate colonne5",{{"RadSG", "radsol"}}),
    #"Sostituito valore2" = Table.ReplaceValue(#"Rinominate colonne6",null,0,Replacer.ReplaceValue,{"radsol"}),
    #"Aggiunta colonna personalizzata" = Table.AddColumn(#"Sostituito valore2", "ind", each null),
    #"Aggiunta colonna personalizzata15" = Table.AddColumn(#"Aggiunta colonna personalizzata", "Test", each Text.From([datas]) & " " & Text.From([ora])),
    #"Modificato tipo4" = Table.TransformColumnTypes(#"Aggiunta colonna personalizzata15",{{"Test", type text}}),
    #"Rimosse colonne" = Table.RemoveColumns(#"Modificato tipo4",{"data+ora"}),
    #"Rinominate colonne7" = Table.RenameColumns(#"Rimosse colonne",{{"Test", "data+ora"}}),
    #"Sostituito valore3" = Table.ReplaceValue(#"Rinominate colonne7","Portici Parco Reggia","PORTICI",Replacer.ReplaceText,{"stazione meteo"}),
    #"Sostituito valore4" = Table.ReplaceValue(#"Sostituito valore3","Napoli NA01 Oss. Astronomico","OSSERVATORIO",Replacer.ReplaceText,{"stazione meteo"}),
    #"Sostituito valore5" = Table.ReplaceValue(#"Sostituito valore4","Pomigliano D’Arco Area ASI","POMIGLIANO",Replacer.ReplaceText,{"stazione meteo"}),
    ValoredaFiltrare = Excel.CurrentWorkbook(){[Name="STAZIONE"]}[Content]{0},
    Filtro = Table.SelectRows(#"Sostituito valore5", each ([stazione meteo] = ValoredaFiltrare[Column1])),
    #"Modificato tipo5" = Table.TransformColumnTypes(Filtro,{{"data+ora", type datetime}}),
    #"Errori sostituiti" = Table.ReplaceErrorValues(#"Modificato tipo5", {{"temp", 0}}),
    #"Errori sostituiti1" = Table.ReplaceErrorValues(#"Errori sostituiti", {{"radsol", 0}}),
    #"Riordinate colonne5" = Table.ReorderColumns(#"Errori sostituiti1",{"ind", "datas", "ora", "data+ora", "stazione meteo", "temp", "radsol"})
in
    #"Riordinate colonne5"
Immagine

Immagine
Allegati
provaANDREA.xlsm
(566.89 KiB) Scaricato 9 volte


Avatar utente

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

problema power query

Messaggio da Andrea90 »

Ciao maria60,

L'errore si verifica in questo passaggio che ti evidenzio:

Immagine

Cancella tutte quelle righe evidenziate e al loro posto inserisci queste:

Codice: Seleziona tutto

    Link = Table.AddColumn(#"Modificato tipo1", "Link",each "http://cemec.arpacampania.it/meteoambientecampania/prodotti/meteo/arpac_dati_centraline_" & [Codice] & "_meteo.csv "),
    #"Funzione personalizzata richiamata" = Table.AddColumn(Link, "Tabelle", each Table.Buffer(EstrazioneDati([Link]))),
    #"Rimossi errori" = Table.RemoveRowsWithErrors(#"Funzione personalizzata richiamata", {"Tabelle"}),
    #"Tabella Tabelle espansa" = Table.ExpandTableColumn(#"Rimossi errori", "Tabelle", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6"}, {"Tabelle.Column1", "Tabelle.Column2", "Tabelle.Column3", "Tabelle.Column4", "Tabelle.Column5", "Tabelle.Column6"}),
Ora le righe che riportavano errore saranno eliminate e la tua query arriverà fino in fondo.

A presto,
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
maria60
Messaggi: 3 | Topic creati
Iscritto il: mar 9 mar 2021, 8:40

problema power query

Messaggio da maria60 »

Grazie Andrea apportando le modifiche suggeritomi ... tutto ok ... quindi risolto
ps. come indicare RISOLTO ....
Rispondi