Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

MySQL + Google Sheets: upptäck rapportändringar snabbt

Rickard Andersson Partner, Nodenordic.se

Månadsrapportering blir märkligt skör. En liten ändring i en fråga, ett nytt filter, en “snabbfix” i ett beräknat fält – och plötsligt stämmer inte siffrorna mot förra perioden.

Den här MySQL Sheets-automationen slår hårdast mot team inom marketing ops och rev ops, men även analytiker och småföretagare märker av det. Du slipper gissa vad som ändrades och får en strukturerad lista över vad som saknas, matchar eller skiljer sig.

Det här arbetsflödet jämför två MySQL-rapportperioder, märker upp skillnaderna och skickar sedan resultaten till Google Sheets så att teamet kan agera snabbt (utan att behöva dubbelkolla databasen hela dagen).

Så fungerar automationen

Se hur detta löser problemet:

n8n Workflow Template: MySQL + Google Sheets: upptäck rapportändringar snabbt

Utmaningen: rapportperioder glider (och ingen märker det)

Att jämföra rapportperioder låter enkelt tills du faktiskt gör det. Du tar en SQL-summering för förra året, en annan för i år, klistrar in resultaten i ett kalkylark och försöker se vad som ändrats. Sedan frågar någon: “Varför ökade antal ordrar men intäkterna gjorde det inte?” och du slutar med att köra om frågor, dubbelkolla joins och diskutera vilken version av rapporten som är “korrekt”. Den verkliga kostnaden är inte bara tid. Det är den ständiga osäkerheten som gör varje beslut långsammare.

Det växer snabbt. Här är var det fallerar i verkliga team.

  • Du jämför manuellt två exporter rad för rad, och det är lätt att missa en subtil förskjutning i ett fält.
  • Små ändringar i beräkningar (som ett justerat orderantal) skapar förvirrande avvikelser som ser ut som “dataproblem”.
  • Olika tidsfönster kan dölja saknade rader, så du upptäcker problem först efter att någon klagat.
  • Även när du hittar ändringen tar kommunikationen ytterligare en runda med skärmdumpar och förklaringar.

Lösningen: jämför två MySQL-rapporter och publicera skillnaderna

Det här n8n-arbetsflödet kör två MySQL-frågor som ger samma typ av summeringsrapport, men för olika tidsperioder. Den ena rapporten täcker en tidigare period (i exemplet 2003–2004) och den andra täcker den senare perioden (2004–2005). Innan de jämförs gör arbetsflödet en liten transformation av orderantalet i den andra datamängden, vilket simulerar den typen av “hjälpsam justering” som brukar skapa förvirring senare. Sedan klassificerar steget Compare Datasets varje post i fyra tydliga grupper: bara i period A, bara i period B, identisk i båda eller finns i båda men skiljer sig. Till sist kan resultaten skickas till ett Google Sheet så att teamet ser svaret på ett ställe.

Arbetsflödet startar med en manuell trigger (lätt att byta till Cron när du vill schemalägga). Det hämtar de två rapportdatamängderna från MySQL, normaliserar orderantalet för den senare perioden och kör en datamängdsjämförelse som ger utdata för “endast A”, “endast B”, “samma” och “olika”. Därifrån blir publicering till Google Sheets ett naturligt nästa steg för delning.

Vad som ändras: före vs. efter

Praktisk effekt i verkligheten

Säg att du publicerar två summeringsrapporter varje vecka och gör en manuell jämförelse innan du skickar ut dem. En typisk rutin är cirka 10 minuter för att exportera varje period, ungefär 20 minuter för att få allt att linjera i Sheets och ytterligare 20 minuter för att förklara avvikelserna. Runt 50 minuter per körning. Med det här arbetsflödet klickar du kör (eller schemalägger), väntar en stund på båda MySQL-frågorna och sedan är jämförelseutdata redo att skickas till Google Sheets. De flesta team får ner den veckovisa kontrollen till cirka 10 minuters övervakning.

Krav

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • MySQL för att köra båda periodfrågorna.
  • Google Sheets för att dela jämförelseutdata.
  • MySQL-inloggningsuppgifter (få dem från din databasadmin eller hostpanel).

Svårighetsnivå: Nybörjare. Du klistrar in SQL, kopplar konton och mappar några kolumner.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Flödet i arbetsflödet

En körning triggas. I mallen är det en manuell start, vilket är perfekt för test. Många team byter detta till ett Cron-schema så att jämförelsen körs varje måndag morgon.

Två MySQL-rapporter hämtas. En fråga hämtar rapporten för den tidigare perioden och den andra hämtar rapporten för den senare perioden. Nyckeln är att båda resultaten har samma struktur så att jämförelsen blir meningsfull.

Den senare datamängden normaliseras. Arbetsflödet använder ett Set-steg för att manipulera orderantalet i den senare rapporten. Det är en liten förändring, men den speglar verkligheten – där en liten justering i en beräkning kan skapa en stor diskussion om rapporteringen.

Datamängder jämförs och grupperas. Compare Datasets ger fyra kategoriserade utdata: poster endast i A, endast i B, matchar i båda och skiljer sig mellan perioder. Det är de kategorierna som gör slutresultatet lätt att skumma.

Du kan enkelt ändra SQL-tidsfönstren för att jämföra månader, kvartal eller kampanjperioder utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera den manuella triggern

Det här arbetsflödet startas manuellt och kör två SQL-frågor parallellt.

  1. Lägg till noden Manual Execution Start som er trigger.
  2. Koppla Manual Execution Start till både Retrieve 2003-2004 Orders och Retrieve 2004-2005 Orders så att de körs parallellt.

Manual Execution Start skickar utdata parallellt till både Retrieve 2003-2004 Orders och Retrieve 2004-2005 Orders.

Steg 2: Anslut MySQL och hämta historiska ordrar

Konfigurera båda SQL-frågorna så att de hämtar betalningsdata för de två årsspannen.

  1. Öppna Retrieve 2003-2004 Orders och ställ in OperationexecuteQuery.
  2. Ställ in QuerySELECT customerNumber, SUM(amount) as Total, COUNT(*) as ordercount, YEAR(paymentDate) as year FROM payments WHERE YEAR(paymentDate) = '2003' OR YEAR(paymentDate) = '2004' GROUP BY customerNumber, year ;.
  3. Inloggningsuppgifter krävs: Anslut era mySql-uppgifter.
  4. Öppna Retrieve 2004-2005 Orders och ställ in OperationexecuteQuery.
  5. Ställ in QuerySELECT customerNumber, SUM(amount) as Total, COUNT(*) as ordercount, YEAR(paymentDate) as year FROM payments WHERE YEAR(paymentDate) = '2004' OR YEAR(paymentDate) = '2005' GROUP BY customerNumber, year ;.
  6. Inloggningsuppgifter krävs: Anslut era mySql-uppgifter.
Om er databas använder ett annat schema, justera tabellnamnet och datumfältet i båda SQL-frågorna så att de matchar er struktur.

Steg 3: Sätt upp bearbetningsnoden

Normalisera datamängden så att jämförelsenoden får ett konsekvent fält för antal ordrar.

  1. Öppna Set Order Count och lägg till ett nummerfält.
  2. Ställ in Name till ordercount och Value till 1.
  3. Koppla Retrieve 2004-2005 Orders till Set Order Count.

Steg 4: Konfigurera jämförelsen av datamängder

Jämför båda datamängderna baserat på kundnummer och år.

  1. Öppna Dataset Comparison och ställ in Merge By Fields så att customerNumber matchas med customerNumber och year med year.
  2. Ställ in Multiple Matches till all under Options.
  3. Koppla Retrieve 2003-2004 Orders till input 0 på Dataset Comparison.
  4. Koppla Set Order Count till input 1 på Dataset Comparison.
⚠️ Vanlig fallgrop: Om fälten har andra namn i era SQL-resultat kommer jämförelsen inte att ge några träffar. Säkerställ att båda datamängderna returnerar customerNumber och year.

Steg 5: Testa och aktivera ert arbetsflöde

Kör ett manuellt test för att validera jämförelseutdata innan ni aktiverar arbetsflödet.

  1. Klicka på Execute Workflow för att trigga Manual Execution Start.
  2. Bekräfta att båda SQL-frågorna körs och att Dataset Comparison returnerar matchade rader utifrån customerNumber och year.
  3. Om resultaten ser korrekta ut, växla arbetsflödet till Active för användning i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp för

  • MySQL-inloggningsuppgifter kan gå ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först användarens grants och anslutningsinställningarna i n8n.
  • Om du ändrar SQL-utdatakolumnerna kan Compare Datasets märka allt som “olika”. Håll fältnamn konsekventa i båda frågorna innan du antar att datan är fel.
  • Google Sheets kan misslyckas tyst när du skickar inkonsekventa datatyper (tal vs. text). Om ditt ark ser “fel” ut, normalisera fält i Set-steget innan du skriver rader.

Vanliga frågor

Hur snabbt kan jag implementera den här MySQL Sheets-automationen?

Cirka 30 minuter om du redan har SQL-frågorna.

Kan icke-tekniska team implementera den här automationslösningen för rapportjämförelse?

Ja, men någon behöver ta fram (eller godkänna) SQL:en. Resten handlar mest om att koppla MySQL och mappa fält för utdata till Google Sheet.

Är n8n gratis att använda för det här arbetsflödet för MySQL Sheets-automation?

Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för MySQL-hosting om du inte redan kör det.

Var kan jag hosta n8n för att köra den här automationen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Hur anpassar jag den här MySQL Sheets-automationslösningen till mina specifika utmaningar?

Du kan byta ut de två MySQL-frågenoderna så att de matchar dina egna rapporttabeller och datumfönster. Om du inte behöver justera orderantal, ta bort eller skriv om steget “Set Order Count” så att båda datamängderna blir jämförbara. Vanliga justeringar är att jämföra månad-för-månad i stället för år-för-år, lägga till ett fält för “affärsenhet” i grupperingen och filtrera bort testordrar innan jämförelsen.

Varför misslyckas min MySQL-anslutning i det här arbetsflödet?

Oftast beror det på utgångna inloggningsuppgifter eller att databasens host/IP inte är nåbar från din n8n-instans. Uppdatera MySQL-inloggningsuppgifterna i n8n, bekräfta att användaren har behörighet att köra de SELECT-satser du använder och kontrollera brandväggsregler om du kör egen hosting. Om frågorna fungerar i en databasklient men inte i n8n beror det ofta på TLS/SSL-inställningar eller en saknad port i anslutningskonfigurationen.

Vilken kapacitet har den här MySQL Sheets-automationslösningen?

För de flesta rapportsummeringar skalar den utan problem.

Är den här MySQL Sheets-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Zapier och Make är bra för enkla “när X händer, gör Y”, men att jämföra två datamängder på ett strukturerat sätt kräver ofta förgreningar, strukturerad utdata och lite transformationslogik. n8n hanterar det utan att din automation blir en hög av separata zaps eller scenarion. Dessutom är egen hosting viktig här: du kan köra jämförelser så ofta du vill utan att oroa dig för task-limiter. Om du bara gör en liten export i två steg till Sheets en gång i månaden kan Zapier vara enklare. Prata med en automationsexpert om du vill ha hjälp att välja.

När du direkt kan se vad som saknas, matchar eller skiljer sig förändras diskussionen. Arbetsflödet tar hand om den repetitiva kontrollen så att du kan fokusera på vad siffrorna faktiskt betyder.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal