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)
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!
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.
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
gör du om dataformatet till “Year Month” samt
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 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
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.
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.
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 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
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.
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.
Vår konsulter är experter på SQL och hjälper er gärna sy ihop vad ni behöver.