Skip to main content

Oppitunti: Tulojen kasvun analysointi parkettitiedostojen ja DuckDB SQL:n avulla

Konteksti

FME on äskettäin esitellyt DuckDB:n SQLExecutorin ja Readerin kautta uusimmissa betaversioissa. Tämä opetusohjelma opastaa sinua SQLExecutorin avulla suorittamaan monimutkaisia ​​ja dynaamisia kyselyitä tehokkaasti. Analysoimme Suomen julkisia tuloja ja tunnistamme FME:n ja DuckDB:n avulla kunkin tulolähteen suurimman vuosittaisen kasvun suhteessa.

Mitä oppia?

  • Luodaan väliaikaisia ​​kansioita
  • Ominaisuuksien yhdistäminen
  • Tietojen kirjoittaminen parkettitiedostoihin
  • Monimutkaisten SQL-kyselyjen suorittaminen
  • Tietojen kääntäminen ja suodattaminen

Lähdetiedot

127f — Verot ja veronluonteiset maksut, vuosittain, 1975-2023

Ote tiedoista

Ote tiedoista: Jokaisessa vero- tai tulovirrassa on rivi, jossa on sarake kullekin vuodelle 1975–2023.

 

Vaiheittainen opas
Osa 1 : Tietojen valmistelu

Tässä otamme stat.fi:n syöttötiedot ja valmistelemme sen DuckDB:tä varten väliaikaisena parkettitiedostona.

  • Lisää CSV : Tuo data stat.fi:stä FME:n automaattisesti skannaamalla tyypit.
  • Luo väliaikaisia ​​kansioita : Luo jaettu väliaikaiskansio käyttämällä Creator- ja TempPathnameCreator-ohjelmaa.
  • FeatureMerger : Linkitä kaikki ominaisuudet temp-kansioon 1:1-näppäimellä.
  • FeatureWriter : Luo parkettitiedosto temp-kansioon käsitelläksesi tietotyyppejä tehokkaasti.
Liity FeatureMergeriin
Osa parketin määritelmää FeatureWriterissä

Osa 2: Analysoi DuckDB:llä SQLExecutorin kautta

  • Määritä DuckDB SQLExecutorissa : Tietokanta luodaan lennossa, ja se pystyy muodostamaan yhteyden lähdetietosarjoihin.
  • Valmistele SQL-erotin : Käytä FME_SQL_DELIMITER | vahvistusasetuksiin.
FME_SQL_DELIMITER |
  • Lataa tiedot : Käytä DuckDB:tä lukeaksesi Parquet-tiedoston:
LUO TAULUKONEEN tulo_raaka AS
SELECT * FROM read_parquet("@Arvo(_tietojoukko)/@Arvo(_ominaisuus_tyypit{0}.nimi).parketti");
  • Pivot-tiedot : irrota tiedot paremman analyysin saamiseksi:
--Unpivot luo 1 objektin vuodessa. FME voisi tehdä sen, mutta tämä on erittäin nopeaa ja LLM voi tehdä lausunnon puolestasi.
LUO TAULUKKO pivoted_revenue_data AS
 SELECT Sektori, Verolaji, Tiedot, CAST(vuosi AS INTEGER)
 AS vuosi, tulot tuloista_raaka
 UNPIVOT ( tulot VUODELTA IN (1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1918, 1918) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2007, 208, 20 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023) );
  • Vienti parketille : Testaa prosessia viemällä kierretyt tiedot:
KOPIO (VALITSE * FROM pivoted_revenue_data) TOIMINNAN "@Arvo(_dataset)/@Value(_feature_types{0}.name)_pivoted.parquet";|
  • Laske prosentuaalinen lisäys : Laske vuotuinen tulon kasvu SQL-ikkunafunktiolla.
-- SQL:n "ikkunan" käyttö ominaisuuden käyttämiseksi ennen nykyistä tietuetta tai sen jälkeen. Toimii myös FME:ssä. (tiedot pudonneet)
CREATE TABLE bevételt_evol AS
 SELECT Sektori, Verolaji, vuosi, liikevaihto,
        LAG(tulo) YLI (OSIO Sektori, Verolaji TILAA VUODEN MUKAAN) AS edellinen_tulo,
        CASE
            KUN LAG(tulo) OVER (OSIO Sektori, Verolaji TILAUS VUODEN MUKAAN) ON NULL, NIIN NULL
            MUUT (tulot - LAG(tulo) YLI (OSIO Sektorin, Verolaji TILAUS VUODEN MUKAAN)) / LAG(tulo) YLI (OSIO Sektorin, Verolaji TILAUS VUODEN MUKAAN) * 100
        END AS tulon_lisäys_prosentti
    FROM
        pivoted_revenue_data;|
  • Vie takaisin FME :hen: Käytä yllä olevaa SELECT-käskyä palauttaaksesi tiedot FME-liukuhihnaan:
SELECT * FROM tulot_kehitys;|

Sivuhuomautuksena sinulla voi olla useita valintoja SQLExecutorissa. Jokainen niistä työntää uusia ominaisuuksia takaisin FME-putkistoon.

  • Paljasta uusia ominaisuuksia

Koska attribuutit generoi SQL, FME ei ”näe” niitä oletusarvoisesti. Mutta FME antaa sinun paljastaa ne jäsentämällä kyselyä.

  • Tarkista lähtö

Tuloksena oli yli 6000 riviä enemmän tai vähemmän odotetulla arvolla.

Osa 3 : Valitse vuosi, jolloin tulovirrat kasvoivat eniten.

Tämä osa voitaisiin tehdä SQL:llä, mutta FME tarjoaa interaktiivisemman kokemuksen kulmakoteloihin, joten käytämme klassisia muuntajia.

  • Suodattimen lisäys : Vertaa “tuloja” ja “aiempia tuloja” Testerillä.
  • Lajittele tiedot : Lajittele saadaksesi suurimman lisäyksen ensin, ryhmitelty “Verolajin” mukaan.
  • Esimerkkitiedot : Ota näyte kunkin ryhmän ensimmäisestä tiedosta.
  • Tarkista tiedot

Onnittelut, olet valmis tältä päivältä!

Johtopäätös

FME ja DuckDB täydentävät toisiaan täydellisesti. FME on erinomainen kooditon alusta automatisoitujen, reaaliaikaisten dataputkien luomiseen useissa eri formaateissa. Kevyt DuckDB mahdollistaa tehokkaat muunnokset mittakaavassa. Olemme innoissamme mahdollisuudesta integroida näitä työkaluja entistä tehokkaammin tulevaisuudessa!