BookmarkSubscribeRSS Feed
cbasah
Calcite | Level 5

Hi,

I am new to OLAP and have been trying create a large OLAP cube from SAS ABM.

The fact table has about 150 million rows. 16 dimensions, each having on average 3-level hierarchies and not more than 4 levels.

The OLAP server runs on a machine with the following specs:

- 8 core

- 32 gb of memory

- 500 GB dedicated disk for tempdb

- underlying RDBMS is MSSQL

I face 2 problems in generating the cube with the following settings:

1) Aggregation with index

- the 500gb-tempdb gets maximised causing a cube generation to stop with tempdb full error

2) No aggregation index (NOINDEX option applied to PROC OLAP)

- the tempdb does not max out and grows up to approximately 200 gb

- however,the OLAP cube generation runs for more than 8 hours before ending with a "...Class selection..." error

- SQL is telling me that:

     - there are 100 parallel threads each doing the same select statement of the entire fact table

     - each statement is suspended with CXPACKET wait types

- Window Perfmon is telling me that:

     - tempdb disk queue length of about 0.8 to 1.2

     - disk write is on average is 8mb/s and disk writes on average is 32mb/s

     - Page life expetancy of about 220 (An MS SQL 2005 recommends > 300)

I believe all the above are happening due to the size of our fact table. Reducing dimensions is not an option due to business requirements. I was thinking of splitting the fact table into smaller tranches where each selection query can fit into memory and avoid going into disk i/o. Appreciate insights/ advice on the above problems.

Thanks.

2 REPLIES 2
LinusH
Tourmaline | Level 20

The first question that comes into mind is, do you really need all 150'' rows in the cube?

Maybe, some detail level could be accessible via drill-through?

Is the fact table aggregated to the lowest level of the dimensions? If not, try to summarize it before the PROC OLAP.

If yes, are you using COMPACT_NWAY? Try without it.

Since you hav more dimensions than cores, you might want to try setting ASYNCINDEXLIMIT.

For testing purposes, try load let's say a 10th of the fact table, and try differnet option settings to see how they influence your cube build.

Are you on 64-bit Windows? And during the job, are you getting all available RAM for you SAS process?

I'm not very familiar with Perfmon statistics. But if you find some of these alarming, maybe you should make a call/send message to SAS tech support.

/Linus

Data never sleeps
cbasah
Calcite | Level 5

I managed to create the cube using the NONUPDATEABLE flag which means my dimensions are non-updateable. The cube is created monthly though.

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 2 replies
  • 1134 views
  • 1 like
  • 2 in conversation