Take a look at https://code.jsoftware.com/wiki/Jd if you have not already
done so.

The docs are weak and we depend more on the tutorials. There are tutorials
that cover the area you are interested in.

I loaded your files and have taken a quick look.

First, I removed all the col relabel stuff as it is noise (and at times in
the past has triggered bugs). That is, remove all the txt: and other stuff
to make the statement as simple as possible.

The by clause requires that there be an aggregation function for each col
in the select clause. That is the important part you were missing, although
the error was quite misleading.

The following is a simple statement that works and has all the important
elements from your example.


jd'reads count patients.LASTNAME , count visits.VISIT_DATE by
patients.PATIENTID  from patients, patients.visits'

Perhaps it will help you get further along.

If you get stuck again or are still stuck, please ask again.

On Thu, Feb 10, 2022 at 2:12 PM Raul Miller <rauldmil...@gmail.com> wrote:

> Embarrassing mis-statement:
>
> I wrote: "I am not trying to learn Jd"
>
> I meant: I am *now* trying to learn Jd
>
> --
> Raul
>
> On Thu, Feb 10, 2022 at 1:58 PM Raul Miller <rauldmil...@gmail.com> wrote:
> >
> > http://rosettacode.org/wiki/Merge_and_aggregate_datasets
> >
> > After looking at this rosettacode task, I decided that Jd is probably
> > best suited for the J task implementation. So, I am not trying to
> > learn Jd (I had not had occasion to use it, previously).
> >
> > After a few minor mishaps, I've stumbled on an issue which I do not
> > know how to resolve.
> >
> > (Previous mishaps: csvload fails with an error suggesting that the
> > file does not exist if csvprepare has not been previously run. This
> > behavior is undocumented, except by example in the tutorials. Also, I
> > need to run the tutorial in a different J session from my testing work
> > to prevent the tutorials from breaking my tests.)
> >
> > Anyways, I'm currently getting an Unrecognized aggregate function
> > error, when trying to use the 'max' aggregate function. This should
> > demonstrate where I'm at:
> >
> > require'jd pacman'
> > load JDP,'tools/csv_load.ijs'
> > F=: jpath '~temp/rosettacode/example/CSV'
> > jdcreatefolder_jd_ CSVFOLDER=: F
> >
> > assert 0<{{)n
> > PATIENTID,LASTNAME
> > 1001,Hopper
> > 4004,Wirth
> > 3003,Kemeny
> > 2002,Gosling
> > 5005,Kurtz
> > }} fwrite F,'patients.csv'
> >
> > assert 0<{{)n
> > PATIENTID,VISIT_DATE,SCORE
> > 2002,2020-09-10,6.8
> > 1001,2020-09-17,5.5
> > 4004,2020-09-24,8.4
> > 2002,2020-10-08,
> > 1001,,6.6
> > 3003,2020-11-12,
> > 4004,2020-11-05,7.0
> > 1001,2020-11-19,5.3
> > }} fwrite F,'visits.csv'
> >
> > csvprepare 'patients';F,'patients.csv'
> > csvprepare 'visits';F,'visits.csv'
> >
> > csvload 'patients';1
> > csvload 'visits';1
> >
> > jd'ref patients PATIENTID  visits PATIENTID'
> >
> > echo jd ([echo) deb {{)n
> >   reads
> >      p.PATIENTID,
> >      LASTNAME:p.LASTNAME,
> >      first v.VISIT_DATE
> >     by
> >      p.PATIENTID
> >     from
> >       p:patients,
> >       v:p.visits
> > }} -.LF
> >
> > Now, ... one of my thoughts was that maybe this is a type error,
> > indicating that 'max' does not have a definition for the type of data
> > in this column. However, replacing 'max' with 'first' (which should be
> > defined for any type of column) also gives an "Unrecognized aggregate
> > function' error.
> >
> > So...
> >
> > (1) What am I doing wrong here, and
> >
> > (2) What should I have looked at to discover this information?
> >
> > Thanks,
> >
> > --
> > Raul
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to