FILE AGGRE tekee tyhjän datan?

classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

FILE AGGRE tekee tyhjän datan?

Kimmo Vehkalahti
Administrator
Mahtaako olla yleinen ongelma: tavallinen FILE AGGRE ja optio SUM, tuloksena oikean rakenteinen mutta tyhjä data?! Kokeilin vielä KUNNAT-datalla: tulee näemmä jotain, muttei sitä mitä pitäisi.
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGRE tekee tyhjän datan?

Reijo Sund
Administrator
Kimmo Vehkalahti wrote
tavallinen FILE AGGRE ja optio SUM, tuloksena oikean rakenteinen mutta tyhjä data?!
Olipa kummallinen bugi. Luki jostain syystä lähtödataa väärästä kohtaa ainakin aggregaattimuuttujan osalta ja siksi tuotti roskaa (tai mahdollisesti tyhjää), joka sitten kirjoitettiin (oikein) tulostiedostoon. Paikka meni sekaisin kohdassa, jossa hiukan poikkeuksellisella tavalla kopioitiin lähtötiedoston header tulostiedoston "pohjaksi".

Sain korjattua käyttämällä ftell:iä ja fseek:iä rewind:in sijaan, mutta en ihan täysin ymmärrä miksi alkuperäinen versio ei toiminut .

Toimiiko muissakin ympäristöissä versiossa 0.6.5 vai pitääkö yrittää penkoa syytä tarkemmin?
Reply | Threaded
Open this post in threaded view
|

FILE AGGR - BY

Petri Palmu
Jos aggregoi kahden muuttujan esim. HETU,VUOSI mukaan aineiston, niin on pakko ensin tehdä esim. VAR str(HETUV)=str(HETU)&"-"&str(VUOSI) tyyppinen apumuuttuja. Isoilla datoilla (myös .SVO  kokorajoituksen takia) olisi mukavaa, jos voisi välttää apumuuttujan tekemisen eli aggregoida suoraan:

FILE AGGR <DATA> BY HETU,VUOSI TO <DATA2>...

Vai onkohan multa jotain jäänyt huomaamatta? Voisiko FILE AGGR tehdä tuon tarvittavan indeksoinnin jotenkin taustalla?
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - BY

Kimmo Vehkalahti
Administrator
Eikös tässä ole se KEY_SAVED -täsmennys, jolla tuo kätevöityy? Siis FILE SORT:issa.
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - BY

Petri Palmu
Kimmo Vehkalahti wrote
Eikös tässä ole se KEY_SAVED -täsmennys, jolla tuo kätevöityy? Siis FILE SORT:issa.
Mutta tuossa pitää luoda dataan lisäsarake? Eli datan koko kasvaa. Tätä datan paisuttamista yritän välttää... kun datan kokoraja tulee vastaan...

Muuten, FILE SORTissa ei ole mahdollista valita muuttujia VARS=X1,Z5  ... ?  Usein on aika tarpeetonta sortata koko massaa, kun FILE AGGRiin tarvitsee vain osan muuttujista...

Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - BY

Juha Valtonen
In reply to this post by Kimmo Vehkalahti
Jep:
 a more direct method
is to use a specification
KEY_SAVED=<string_variable>
in the FILE SORT operation which normally precedes FILE AGGR since
the data must be sorted by <aggr_variable>.
KEY_SAVED in FILE SORT creates a <string_variable> if needed
in the <new_data_file> and saves the combined sort keys in it.
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - BY

Reijo Sund
Administrator
In reply to this post by Petri Palmu
Petri Palmu wrote
olisi mukavaa, jos voisi välttää apumuuttujan tekemisen eli aggregoida suoraan:
FILE AGGR <DATA> BY HETU,VUOSI TO <DATA2>
Minusta tämä on hyvä ajatus ja olen kaivannut sitä itsekin monituisia kertoja, varsinkin kun KEY_SAVED on kranttu muuttujatyyppien suhteen. Homman sai hoidettua helposti ja edellä oleva tapa "aggregaattiblokin" määrittämiseksi on lisätty versioon 0.6.9.
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - BY

Petri Palmu
Reijo Sund wrote

Minusta tämä on hyvä ajatus ja olen kaivannut sitä itsekin monituisia kertoja, varsinkin kun KEY_SAVED on kranttu muuttujatyyppien suhteen. Homman sai hoidettua helposti ja edellä oleva tapa "aggregaattiblokin" määrittämiseksi on lisätty versioon 0.6.9.
Loistavaa, ko. asia on kyllä ollut kauan mielessä... :)
Reply | Threaded
Open this post in threaded view
|

Re: VARS-täsmennys FILE SORTissa

Reijo Sund
Administrator
In reply to this post by Petri Palmu
Petri Palmu wrote
Muuten, FILE SORTissa ei ole mahdollista valita muuttujia VARS=X1,Z5  ... ?
Tämä ominaisuus on tosiaan puuttunut FILE SORTista ja silloin tällöin tulee kyllä vastaan tilanteita, joissa mieluusti valikoisi myös muuttujat suoraan järjestämisen yhteydessä. Usein tämän pystyy "kiertämään" tiputtamalla turhia muuttujia vähän aikaisemmassa vaiheessa pois esim. FILE COPYn yhteydessä, mutta isojen datojen kanssa "turha" kopiointi ei ole kivaa.

Versiossa 0.6.9 mukana muuttujien valikointi (VARS, MASK yms.) myös FILE SORTissa.
Reply | Threaded
Open this post in threaded view
|

FILE AGGR + MODE

Petri Palmu
Jälleen FILE AGGR:n kimpussa :) Vaikuttaisi siltä, että FILE AGGR:ssa tuo MODE-funktio ei koske merkkijonomuuttujaa (vain numeerista). Toki moodin voi tuottaa muilla tavoin (esim. muuntaa merkkijono numeeriseksi), mutta voisiko harkita F-AGGR:n yhteyteen?

Siis esim:

DATA _K
X  B
1  A
1  C
2  D
2  A
2  D

FILE SHOW K1
FILE COPY _K TO NEW K
FILE AGGR K BY X TO K1
VARIABLES:
X  FIRST X
B  MODE B
END


FILE LOAD +K1
   X B
   1 0
   2 0
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR + MODE

Petri Palmu
Kyselin tuosta MODE -funktiosta merkkijonomuuttujien yhteydessä. Minusta se olisi aika hyödyllinen. Vaikka sen saa muullakin tavoin, niin suoraan file aggr:saa olisi mukavoittava tekijä
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - muistivirhe

Petri Palmu
Törmäsin ao. muistivirheeseen FILE AGGR yhteydessä (laaja data):

Survo data file TMP1: record=113 bytes, M1=30 L=64  M=22 N=20321157
#####################





Aggregointi näyttää suunnilleen tältä:

FILE AGGR TMP1 BY ID TO TID1
VARIABLES:
ID FIRST ID
VKK1 FIRST VKK
VKK2 LAST VKK
SP  FIRST SP
IKAT0 MEAN IKAT0
MKNO1 FIRST MKNO
MKNO2 LAST MKNO
moMKNO MODE MKNO
SOP1 FIRST SOPID
SOP2 LAST SOPID
moSOP MODE SOPID
N    N   -
NTL  N    TL
NHVAP N    I_HVAP
END

Epäilen, että noi MODE:t (jotka ei toimi, kun lähtömuuttuja on merkkijonomuuttuja) aiheutti ongelman...

Lisäksi tuossa ongelma oli, että mä en päässyt virheilmoituksesta pois muuten kuin sulkemalla väkivalloin Survo R...

Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - muistivirhe

Petri Palmu
Petri Palmu wrote
Törmäsin ao. muistivirheeseen FILE AGGR yhteydessä (laaja data):

Survo data file TMP1: record=113 bytes, M1=30 L=64  M=22 N=20321157
#####################
Höh, huomasin että olin yhdessä vaiheessa unohtanut  FILE COPY:stä TO "NEW", jolloin samaa dataa oli pinoutunut aiemman päälle. Ilmeisesti muistikoko (2gb) ylittynyt (havainnotkin olivat menneet ihan sekaisin...).

Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - muistivirhe

Reijo Sund
Administrator
Lisäsin MODE-tuen merkkijonomuuttujille ja muutin modulin sisäistä resurssienhallintaa niin ettei virhettä resurssien loppumisesta pitäisi tulla edes tuollaisissa patologisissa tilanteissa. Nämä siis mukana sitten versiosta 0.6.13 lähtien.
Reply | Threaded
Open this post in threaded view
|

Re: FILE AGGR - muistivirhe

Petri Palmu
Reijo Sund wrote
Lisäsin MODE-tuen merkkijonomuuttujille ja muutin modulin sisäistä resurssienhallintaa niin ettei virhettä resurssien loppumisesta pitäisi tulla edes tuollaisissa patologisissa tilanteissa. Nämä siis mukana sitten versiosta 0.6.13 lähtien.
Heippa, toimiikohan tuo

X   MODE X

nyt myös merkkijonomuuttujilla. Mielestäni kokeilin, mutta näyttäisi tulevan tyhjää (numeerinen toimii ok) ja jotain omituisia symboleja kuten | joita ei ole lähtömuuttujassa. Kokeilin myös esim.

X:S5 MODE X

Resurssivirhettä ei enää tullut :)