Likvidetsgraf i Google Data Studio

Försöker lägga till en graf som visar hur mycket pengar som fanns på bankkontot vid en viss tidpunkt.

Det är alltså 1930 som ska visas på ett linjediagram. Jag får till en graf som ser korrekt ut förutom att ingående balansen från föregående år saknas.

Jag har även provat att göra en blend(Left join på kontonummer och Fycounter) med vouchers_stg och accounts_stg. Resultatet ser konstigt ut och som att det inte summeras på ett korrekt sätt.

Ett exempel på ett beräknat fält jag provat:

(CASE
	WHEN FyCounter = 0 THEN ABS(Balance)
    ELSE 0
END) + (CASE
	WHEN FyCounter = 0 THEN BalanceBroughtForward
    ELSE 0
END)

(Filtreras för 1930 i Google Data Studios egna filterfunktion)

Går det att få till?

Den graf jag söker finns t.ex i Fortnox när man loggar in. Se bifogad bild.

1 gillning

Hej @Elias_Hedlin och välkommen till vårt supportforum!

Balans (t.ex. likviditet) mäts oftast vid en specifik tidpunkt, i motsats till resultat som mäts mellan olika datum. För att beräkna balansen behöver man addera ingående balans med summan av verifikaten för samma räkenskapsår.

Din önskemål, att visualisera balans löpande över tid gör det lite mer komplicerat. Men jag återkommer inom kort med förslag på lösning! :nerd_face:

1 gillning

Hej igen @Elias_Hedlin!

Nu har vi tagit fram en lösning för dig och alla andra använder.
Vi har skapat en ny datamodeller för att skapa balansrapporter, även löpande över tid. :balance_scale:

Det finns nu ett nytt dataset som heter “fortnox_reports”.
I den finns en datamodell som heter “balance_sheet”.

I den hittar du motsvarande värde som i Fortnox balansrapport. Använd följande fält för din graf:

  • Month
  • BalanceCarriedForward

I Google Data Studio

  1. gör du om dataformatet till “Year Month” samt
  2. sätter filter på de balanskonton (1930) du önskar.

Berätta gärna hur det går för dig eller om du har några ytterligare funderingar.


Ps. För datanörden :nerd_face: publicerar jag nedan hur datamodellen ser ut just nu.

with b as (
  select
    v.OrgId,
    last_day(TransactionDate) Month,
    sum(Balance) * -1 Balance,
    BalanceBroughtForward,
    v.Year,
    v.Account
  from
    `enhanza-elt.fortnox_stg.vouchers_stg` v
    join `enhanza-elt.fortnox_api.accounts` a on v.Year = a.Year
    and v.Account = a.Number
    and v.OrgId = a.OrgId
  where
    Account between 1900
    and 2999
  group by
    v.OrgId,
    last_day(TransactionDate),
    v.Year,
    BalanceBroughtForward,
    v.Account
)
select
  b.OrgId,
  fy.FinancialYear,
  fy.FyCounter,
  b.Month,
  Account,
  b.BalanceBroughtForward,
  sum(b.balance) over (
    partition by b.OrgId,
    b.Year,
    b.Account
    order by
      b.Month
  ) + b.BalanceBroughtForward - b.balance as PeriodOpeningBalance,
  balance PeriodBalance,
  sum(balance) over (
    partition by b.OrgId,
    b.Year,
    b.Account
    order by
      Month
  ) + BalanceBroughtForward as BalanceCarriedForward
from
  b
  left join `enhanza-elt.fortnox_stg.financial_years_stg` fy on b.OrgId = fy.OrgId
  and b.Year = fy.Year
order by
  b.Year desc,
  b.Month desc,
  b.Account

Funkar perfekt!

Tack så mycket! :smiley:

1 gillning

Det enda skulle vara att få till så att man kan se balansen på kontot dag för dag.

Det vara svårt att identifiera om ett företag har likviditetsproblem då man endast ser balansen per sista dagen i månaden. Vissa företag kan ha väldigt mycket pengar in och ut t.ex men landa relativt stabilt i slutet av månaden. Då vill vi kunna se det.

Hej igen!

Kul att det funkade för er! :tada:

Gällande ditt önskemål om balans per dag. Räcker det att lista datum då det skett en transaktion? Eller behöver listan innehålla alla datum?

1 gillning

Jag antar att det räcker med att lista datum då det skett en transaktion. Men det låter som en teknisk fråga.

Samtliga datum måste ju på något sätt vara med så att man kan hovra över grafen och se: “Hur mycket pengar hade jag på kontot den 17:e april” t.ex. Men det kanske går att få till utan att lista alla datum.

Även,

Gällande den nya datakällan som ni lade till på min begäran, Fortnox_reports - balance_sheet. Jag ser att endast 1900-2999 konton har inkluderats. Konton som inkluderas i en balansrapport är i regel 1000 - 2999 konton. Jag jobbar t.ex nu på en rapport för en bilhandelskund som har bilar i lager vilket skulle vara fördelaktigt att visualisera. Denna ligger på konto 1450.

Jag kikade i koden och ser att ni har skrivit:

where
Account between 1900 and 2999

Så det enda som skulle behöva göras är att ändra 1900 till 1000. Jag försökte göra detta själv men inser snabbt att jag tar mig lite vatten över huvudet. Sen vet jag inte heller om det blir några konstigheter från er sida om jag går in och petar i SQL-koden.

Är det några problem om jag skriver egna Queries? (eller hur man ens uttrycker sig)
Betalar ni då fortfarande för serverkostnaden om jag gör en egen Query eller hamnar det på oss?

Du kan helt enkelt ta den befintliga query:n i fortnox_reports.balance_sheet och göra om den till dag istället för månad.

Byt ut…

4. last_day(TransactionDate) Month,

… till

4. TransactionDate,

Längre ner i query:n behöver du följaktligen byta ut b.Month mot b.TransactionDate.

Om du har fler frågor kring SQL-frågor är du välkommen med dem här: Google Bigquery (SQL) - Enhanza

Du har helt rätt! My bad. Koden (SQL-frågan) är nu uppdaterad till det korrekt
between 1000 and 2999.

Om du behärskar, eller lär dig behärska, SQL kommer du kunna trolla fram nästan vad som helst. Du behöver då göra det från eget projekt i Google Cloud. Det innebär teoretisk att kostnaderna för dem landar på det projektet. Men eftersom det ingår 1 TB så kommer det i praktiken inte kosta er något.

Provade lite och lyckades få till en graf som såg rätt ut med lite magi.
Det blev dock fel när jag hovrade över. Det var som att datum som saknade transaktion inte gick att hovra över och därför blev grafen inte användarvänlig över huvud taget.

Så samtliga datum kanske behöver vara med ändå.
Några tips?


Snyggt! Nu kan jag se 1450 kontot där det ska vara :slight_smile:


Okej, bra! Jag pillade lite gran och insåg kanske att jag är lite för junior på ämnet men det är bra att veta att möjligheten finns.

Tack!

För att få med samtliga datum kan du låta SQL-satsen GENERATE_DATE_ARRAY() generera ett datumintervall inom respektive räkenskapsår enligt nedan.

select
  a as Date
from
  `enhanza-elt.fortnox_api.financial_years`
  cross join UNNEST(
    GENERATE_DATE_ARRAY(FromDate, ToDate, INTERVAL 1 DAY)
  ) a
order by
  Date

JOIN:a sedan den med min tidigare SQL-sats ovan.


:partying_face:

Vår konsulter är experter på SQL och hjälper er gärna sy ihop vad ni behöver.