From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Vorobiev Subject: Re: [Babel][R] Inclusion of multi-line named code blocks in R code Date: Thu, 19 Sep 2013 10:14:56 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7b6d7f14a2862f04e6be05bb Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMfx0-0006ZH-Ab for emacs-orgmode@gnu.org; Thu, 19 Sep 2013 11:15:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VMfwu-0005KD-Ue for emacs-orgmode@gnu.org; Thu, 19 Sep 2013 11:15:26 -0400 Received: from mail-pb0-x229.google.com ([2607:f8b0:400e:c01::229]:41266) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMfwu-0005K4-Io for emacs-orgmode@gnu.org; Thu, 19 Sep 2013 11:15:20 -0400 Received: by mail-pb0-f41.google.com with SMTP id rp2so8571511pbb.28 for ; Thu, 19 Sep 2013 08:15:19 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: "Thomas S. Dye" Cc: emacs-orgmode --047d7b6d7f14a2862f04e6be05bb Content-Type: text/plain; charset=ISO-8859-1 I found an answer to my question. It turned out this behavior is described in the documentation for org-babel-expand-noweb-references: "Note that any text preceding the <> construct on a line will be interposed between the lines of the replacement text. So for example if <> is placed behind a comment, then the entire replacement text will also be commented." It is also documented in the manual http://orgmode.org/manual/noweb.html#noweb in the "Noweb prefix lines" section. So, in my case the solution is to put the <> reference on the next line: #+begin_src R :session *R* :noweb yes result <- submit_query(" <>") #+end_src It doesn't look as nice as before but it works. Alex On Wed, Sep 18, 2013 at 7:43 PM, Alexander Vorobiev < alexander.vorobiev@gmail.com> wrote: > Hi Tom, > > Unfortunately I can't have pure SQL output in my org files for two reasons: > > 1. The result set I am dealing with for this particular problem is about > 20000 records > 2. My SQL server (Netezza, "big data appliance") is not supported by > Babel-SQL. I configured sql-mode to work with Netezza but session-based SQL > is not supported by Babel either. I started adding support for SQL sessions > to ob-sql.el and it kind of works but the results I am getting are > inconsistent and only a small subset of header parameters is supported. Of > course I haven't tested is with any other database. I can share what I've > done if anybody is interested. > > Regards, > Alex > > > On Wed, Sep 18, 2013 at 5:27 PM, Thomas S. Dye wrote: > >> Aloha Alex, >> >> My work flow in this situation evaluates the SQL to create an Org-mode >> table, which serves as input to the R source code block. >> >> For me, seeing the SQL output in a table is a sanity check. >> >> hth, >> Tom >> >> Alexander Vorobiev writes: >> >> > I have R code which submits SQL statements to a database server. Since >> the >> > SQL is rather complex, I want to put it into a separate code block in >> order >> > to have proper formatting, syntax highlighting, etc: >> > >> > #+name: long-sql >> > #+begin_src sql >> > select * >> > from many, tables >> > where >> > complex_condition1 = 1, >> > complex_condition2 = 2 >> > #+end_src >> > >> > * Load the data to R session >> > #+begin_src R :session *R* :noweb yes >> > result <- submit_query('<>') >> > #+end_src >> > >> > Unfortunately, the R block doesn't work. When I open the file generated >> by >> > Babel, I see this: >> > >> > result <- submit_query('select * >> > result <- submit_query('from many, tables >> > etc >> > >> > instead of the one R submit_query call with my SQL statement as an >> > argument. Is there anything I can do to achieve that? >> > >> > Thanks >> > Alex >> > I have R code which submits SQL statements to a database server. Since >> > the SQL is rather complex, I want to put it into a separate code block >> > in order to have proper formatting, syntax highlighting, etc: >> > >> > #+name: long-sql >> > #+begin_src sql >> > select * >> > from many, tables >> > where >> > complex_condition1 = 1, >> > complex_condition2 = 2 >> > #+end_src >> > >> > * Load the data to R session >> > #+begin_src R :session *R* :noweb yes >> > result <- submit_query('<>') >> > #+end_src >> > >> > Unfortunately, the R block doesn't work. When I open the file >> > generated by Babel, I see this: >> > >> > result <- submit_query('select * >> > result <- submit_query('from many, tables >> > etc >> > >> > instead of the one R submit_query call with my SQL statement as an >> > argument. Is there anything I can do to achieve that? >> > >> > Thanks >> > Alex >> > >> > >> >> -- >> Thomas S. Dye >> http://www.tsdye.com >> > > --047d7b6d7f14a2862f04e6be05bb Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
I found an answer to my question. It turned out this behav= ior is described in the documentation for org-babel-expand-noweb-references= :

"Note that any text preceding the <<fo= o>> construct on a line will be interposed between the lines of the r= eplacement text. =A0So for example if <<foo>> is placed behind = a comment, then the entire replacement text will also be commented."= =A0

It is also documented in the manual=A0http://orgmode.org/manual/noweb.html#= noweb=A0in the "Noweb prefix lines" section.
=
So, in my case the solution is to put the=A0<<long-sql>> reference on the next line:<= /div>

#+begin_src R :session *R* :noweb yes
=A0 result <- submit_query("
=A0 <<long-sql>&g= t;")
#+end_src

It doesn't look as nice as = before but it works.

Alex

On Wed, Sep 18, 2013 at 7:43 PM, Alexander Vorobiev <<= a href=3D"mailto:alexander.vorobiev@gmail.com" target=3D"_blank">alexander.= vorobiev@gmail.com> wrote:
Hi Tom,

Unfortunately I can't have = pure SQL output in my org files for two reasons:

1= . The result set I am dealing with for this particular problem is about 200= 00 records
2. My SQL server (Netezza, "big data appliance") is not supp= orted by Babel-SQL. I configured sql-mode to work with Netezza but session-= based SQL is not supported by Babel either. I started adding support for SQ= L sessions to ob-sql.el and it kind of works but the results I am getting a= re inconsistent and only a small subset of header parameters is supported. = Of course I haven't tested is with any other database. I can share what= I've done if anybody is interested.

Regards,
Alex


On Wed, Sep 18, 2013 at 5:27 PM, Thomas S. Dye <tsd@tsdye.com> = wrote:
Aloha Alex,

My work flow in this situation evaluates the SQL to create an Org-mode
table, which serves as input to the R source code block.

For me, seeing the SQL output in a table is a sanity check.

hth,
Tom

Alexander Vorobiev <alexander.vorobiev@gmail.com> writes:

> I have R code which submits SQL statements to a database server. Since= the
> SQL is rather complex, I want to put it into a separate code block in = order
> to have proper formatting, syntax highlighting, etc:
>
> #+name: long-sql
> #+begin_src sql
> =A0 =A0 select *
> =A0 =A0 from many, tables
> =A0 =A0 where
> =A0 =A0 =A0 =A0 complex_condition1 =3D 1,
> =A0 =A0 =A0 =A0 complex_condition2 =3D 2
> #+end_src
>
> * Load the data to R session
> #+begin_src R :session *R* :noweb yes
> =A0 =A0 result <- submit_query('<<long-sql>>')<= br> > #+end_src
>
> Unfortunately, the R block doesn't work. When I open the file gene= rated by
> Babel, I see this:
>
> result <- submit_query('select *
> result <- submit_query('from many, tables
> etc
>
> instead of the one R submit_query call with my SQL statement as an
> argument. Is there anything I can do to achieve that?
>
> Thanks
> Alex
> I have R code which submits SQL statements to a database server. Since=
> the SQL is rather complex, I want to put it into a separate code block=
> in order to have proper formatting, syntax highlighting, etc:
>
> #+name: long-sql
> #+begin_src sql
> select *
> from many, tables
> where
> complex_condition1 =3D 1,
> complex_condition2 =3D 2
> #+end_src
>
> * Load the data to R session
> #+begin_src R :session *R* :noweb yes
> result <- submit_query('<<long-sql>>')
> #+end_src
>
> Unfortunately, the R block doesn't work. When I open the file
> generated by Babel, I see this:
>
> result <- submit_query('select *
> result <- submit_query('from many, tables
> etc
>
> instead of the one R submit_query call with my SQL statement as an
> argument. Is there anything I can do to achieve that?
>
> Thanks
> Alex
>
>

--
Thomas S. Dye
http://www.tsdye.com=


--047d7b6d7f14a2862f04e6be05bb--