f



Re: Dictionary problem with Parallel processing

> From: vijayakumar
>
> I am facing strange problem, my environment is Sun Solaris, SAS 9.1.3.
>
> Situation:
>
> I want to create summary report for the libraries about no of obs,
> when was the data set created and library name etc.
>
> One main job started to run which in turn creates around 30 to 50
> parallel jobs in which I have to create summary report specifically
> for two libraries for all those parallel jobs.
>
>  I have used dictionary. tables and dictionary. members to get the
> report created but every now and then I am getting an error saying the
> "Lock was not available for the dataset and held by some process".
>
> Solution in Mind:
>
> Is this can be avoid if I use sashelp.vtable and sashelp.vslib?

[sound of alarm bells going off here]

> Since
> as far as I know the dictionaries will open the libraries to get the
> above said key things but these sashelp views can be other way around
> to avoid these issue?
>
> I need your expert's advice on this to resolve this issue.

summary: totally avoid reading sashelp views in production code

reason: they are derivatives of SQL dictionaries
and are an order of magnitude slower
i.e.: takes 10 times as long
than Contents which reads information for one specific libref.

see
http://www.sascommunity.org/wiki/List_Processing_Development#Speed_Consi
derations

instead use
Proc Contents data = Libref._all_
              out  = Work.ListTables;

that is a list of variables
you have to reduce that to a list of tables.

Ron Fehd  the module/routine/subroutine maven  CDC Atlanta GA USA RJF2
at cdc dot gov
0
rjf2 (3342)
12/22/2008 10:27:13 PM
comp.soft-sys.sas 142828 articles. 2 followers. Post Follow

2 Replies
1397 Views

Similar Articles

[PageSpeed] 51

Thanks Ian and Ronald will try to use exist with proc contents to
produce the report.

On Dec 22, 11:27=A0pm, r...@CDC.GOV ("Fehd, Ronald J. (CDC/CCHIS/
NCPHI)") wrote:
> > From: vijayakumar
>
> > I am facing strange problem, my environment is Sun Solaris, SAS 9.1.3.
>
> > Situation:
>
> > I want to create summary report for the libraries about no of obs,
> > when was the data set created and library name etc.
>
> > One main job started to run which in turn creates around 30 to 50
> > parallel jobs in which I have to create summary report specifically
> > for two libraries for all those parallel jobs.
>
> > =A0I have used dictionary. tables and dictionary. members to get the
> > report created but every now and then I am getting an error saying the
> > "Lock was not available for the dataset and held by some process".
>
> > Solution in Mind:
>
> > Is this can be avoid if I use sashelp.vtable and sashelp.vslib?
>
> [sound of alarm bells going off here]
>
> > Since
> > as far as I know the dictionaries will open the libraries to get the
> > above said key things but these sashelp views can be other way around
> > to avoid these issue?
>
> > I need your expert's advice on this to resolve this issue.
>
> summary: totally avoid reading sashelp views in production code
>
> reason: they are derivatives of SQL dictionaries
> and are an order of magnitude slower
> i.e.: takes 10 times as long
> than Contents which reads information for one specific libref.
>
> seehttp://www.sascommunity.org/wiki/List_Processing_Development#Speed_Con=
si
> derations
>
> instead use
> Proc Contents data =3D Libref._all_
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 out =A0=3D Work.ListTables;
>
> that is a list of variables
> you have to reduce that to a list of tables.
>
> Ron Fehd =A0the module/routine/subroutine maven =A0CDC Atlanta GA USA RJF=
2
> at cdc dot gov

0
12/22/2008 11:40:23 PM
On Dec 22, 11:27=A0pm, r...@CDC.GOV ("Fehd, Ronald J. (CDC/CCHIS/
NCPHI)") wrote:
> > From: vijayakumar
>
> > I am facing strange problem, my environment is Sun Solaris, SAS 9.1.3.
>
> > Situation:
>
> > I want to create summary report for the libraries about no of obs,
> > when was the data set created and library name etc.
>
> > One main job started to run which in turn creates around 30 to 50
> > parallel jobs in which I have to create summary report specifically
> > for two libraries for all those parallel jobs.
>
> > =A0I have used dictionary. tables and dictionary. members to get the
> > report created but every now and then I am getting an error saying the
> > "Lock was not available for the dataset and held by some process".
>
> > Solution in Mind:
>
> > Is this can be avoid if I use sashelp.vtable and sashelp.vslib?
>
> [sound of alarm bells going off here]
>
> > Since
> > as far as I know the dictionaries will open the libraries to get the
> > above said key things but these sashelp views can be other way around
> > to avoid these issue?
>
> > I need your expert's advice on this to resolve this issue.
>
> summary: totally avoid reading sashelp views in production code
>
> reason: they are derivatives of SQL dictionaries
> and are an order of magnitude slower
> i.e.: takes 10 times as long
> than Contents which reads information for one specific libref.
>
> seehttp://www.sascommunity.org/wiki/List_Processing_Development#Speed_Con=
si
> derations
>
> instead use
> Proc Contents data =3D Libref._all_
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 out =A0=3D Work.ListTables;
>
> that is a list of variables
> you have to reduce that to a list of tables.
>
> Ron Fehd =A0the module/routine/subroutine maven =A0CDC Atlanta GA USA RJF=
2
> at cdc dot gov

Thanks Ian and Ronald will try with exist and proc contents tomorrow
and let u guys know :-)
0
12/22/2008 11:42:34 PM
Reply: