atviriduomenys / spinta

Spinta is a framework to describe, extract and publish data (a DEP Framework).
MIT License
13 stars 4 forks source link

Push data #760

Open JuliusLADP opened 2 months ago

JuliusLADP commented 2 months ago

Suformuoti ir aprašyti užduotį, kuri Manto buvo užmanyta šiame kontekste Add support for array type in tabular manifests #161

Ištestuoti ar veikia, jei neveikia pataisyti, kad veiktu.

Visi žemiau pateikti pavyzdžiai turėtu veikti su:

spinta push

komanda, tai reiškia turi veikti duomenų nuskaitymas iš išorinio šaltinio, pavyzdžiui naudojant sql backend, duomenų perdavimas Saugyklai ir Saugykloje duomenų įrašymas į vidinį backend (postgresql).

Masyvas be tarpinės lentelės

Pradiniai duomenys

Lentelė LANGUAGES:

ID CODE NAME
1 ltu Lithuanian
2 sgs Samogitian

Lentelė COUNTRIES:

ID NAME LANGUAGES
1 Lithuania ltu,sgs

Struktūros aprašas

d | r | b | m | property    | type    | ref            | source     | prepare
example                     |         |                |            |
                            |         |                |            |
  |   |   | Language        |         | id             | LANGUAGES  |
  |   |   |   | id          | integer |                | ID         |
  |   |   |   | code        | string  |                | CODE       |
  |   |   |   | name@en     | string  |                | NAME       |
                            |         |                |            |
  |   |   | Country         |         | id             | COUNTRIES  |
  |   |   |   | id          | integer |                | ID         |
  |   |   |   | name@en     | string  |                | NAME       |
  |   |   |   | languages[] | ref     | Language[code] | LANGUAGES  | split(',')

Šiuo atveju yra kuriamas many-to-many ryšys tarp Country ir Language modelių. Country.languages duomenis gauna iš LANGUAGES stulpelio reikšmės, kuri yra dalinama per , kablelį ir gaunamas kalbos kodų sąrašas, kuris yra jungiamas su Language.code.

Masyvas su tarpine lentele

Pradiniai duomenys

Lentelė LANGUAGES:

ID NAME
1 Lithuanian
2 Samogitian

Lentelė COUNTRIES:

ID NAME
1 Lithuania

Lentelė COUNTRY_LANGUAGES:

COUNTRY_ID LANGUAGE_ID
1 1
1 2

Struktūros aprašas

d | r | b | m | property    | type    | ref                | source
example                     |         |                    |
                            |         |                    |
  |   |   | Language        |         | id                 | LANGUAGES
  |   |   |   | id          | integer |                    | ID
  |   |   |   | name@en     | string  |                    | NAME
                            |         |                    |
  |   |   | Country         |         | id                 | COUNTRIES
  |   |   |   | id          | integer |                    | ID
  |   |   |   | name@en     | string  |                    | NAME
  |   |   |   | languages   | array   | CountryLanguage    |
  |   |   |   | languages[] | ref     | Language           |             
                            |         |                    |
  |   |   | CountryLanguage |         | country, language  | COUNTRY_LANGUAGES
  |   |   |   | country     | ref     | Country            | COUNTRY_ID
  |   |   |   | language    | ref     | Language           | LANGUAGES_ID

Šiuo atveju, many-to-many ryšiui sukurti yra naudojama tarpinė lentelė CountryLanguage. Country/language savybė tiesiogiai su šaltiniu nesiejama, kadangi Country ir Language siejimas yra atliekamas per tarpinę CountryLanguage lentelę.

Susiję

sirex commented 2 months ago

Užduoties aprašymas atnaujintas.