BookmarkSubscribeRSS Feed
Hagay
SAS Employee

אני מניח שמרבית הקוראים יודעים מה זה זיפ. לא, אני לא מתכוון לאבקה להכנת המשקה (אם הייתם ילדים בישראל בשנות השמונים נחכה כמה דקות שתחזרו אלינו מהפלאש-בק העצבני שבו אתם תקועים עכשיו) אלא לתוכנה שנראה שקיימת מאז ומעולם ומסוגלת להקטין את גודלם של קבצי מחשב שונים וגם להחזירם לגודלם המקורי ללא פגע.

 

בימים של הדיסקטים ושל המודמים המקרקשים משקלו של כל קילובייט נמדד בזהב כך שהיכולת להקטין את הגודל של קבצי מחשב היתה מתנה משמיים. גם היום, בעידן של כונני הטרהבייט והפס הרחב, היכולת להקטין את הגודל של קבצי המחשב עדיין שימושית, פשוט כי גם הקבצים נעשו גדולים יותר.

 

מה הקשר ל – SAS? החל מגירסא 6  SAS כוללת יכולת מובנית לדחוס טבלאות ע"י האופציה COMPRESS.

את האופציה הזו מוסיפים לשם טבלת הפלט, לדוגמא:

data class (compress=yes);
            set sashelp.class;
run;

ל - SAS יש שני אלגוריתמים לכיווץ טבלאות. הראשון מופעל ע"י compress=yes או compress=char והשני ע"י compress=binary. פרטים נוספים על יכולות הדחיסה של SAS ניתן למצוא כאן אבל בקצרה compress=binary עובד, בדר"כ, טוב יותר על טבלאות עם רשומות רחבות (כלומר הרבה שדות) עם מחרוזות שחוזרות על עצמן.

 

במידה ואתם משתמשים ב – SAS Enterprise Guide ניתן לבקש מ – SAS לדחוס את הטבלה ע"י הוספת האופציה compress=yes (אין צורך בסוגריים) במסך האפשרויות (Option) בחלונית של בונה השאילתות (Query Builder)

EG8_Compress.JPG

EG8_Compress1.JPG

בחינת הלוג תגלה לנו כמה נפח חסכנו בדחיסה:

EG8_Compress2.JPG

לא תמיד דחיסה של טבלה תקטין את הגודל שלה. לדוגמא, אם הטבלה קטנה במיוחד יתכן ולאחר הדחיסה הטבלה תתפוס יותר מקום. הגורמים המשפיעים על ה - "דחיסות" של טבלה, כלומר בכמה נצליח להקטין את הטבלה בעזרת מנגנון הדחיסה של SAS הם:

  • גודל הטבלה (לרוב עם פחות מכמה עשרות אלפי שורות אין טעם בטרחה).
  • כמות השדות התווים. עמודות טקסט נדחסות טוב יותר מעמודות מספריות.
  • מספר התווים החוזרים על עצמם בשדות הטקסט. לדוגמא, שדה המכיל מק"ט בסגנון של 000000000000123456 או עמודה המכילה ערכי טקסט ריקים במרבית השורות (גם רווח זה תו) ידחסו טוב יותר.

 

אמרה ידועה היא שאין ארוחות חינם והיא נכונה גם במקרה הזה. דחיסת הטבלה דורשת מחזורי חישוב (Cycles) נוספים מהמעבד של המחשב. אולם, בשנים האחרונות המעבדים התקדמו כל כך שברוב המחשבים המודרניים המעבדים כל כך מהירים שהמשתמש בכלל לא ירגיש בתוספת הזמן למשך הריצה בעקבות דחיסת הטבלאות.

 

למעשה, מרבית תוכניות ה – SAS דורשות כמות גדולה של קריאות וכתיבות מהדיסקים (IO) והמעבד מבלה חלק ניכר מזמנו בהמתנה לנתונים של הטבלה שיקראו או יכתבו לדיסק. ע"י דחיסת הטבלה המעבד צריך לקרוא או לכתוב פחות נתונים וכך יכול להיות שלא רק שהרווחנו מקום אחסון גם הצלחנו לגרום לתוכניות שלנו לרוץ מהר יותר – גם וגם.

 

חגי

1 REPLY 1
EyalGonen
Barite | Level 11

תודה @Hagay אם כבר הזכרת את הנושא של דחיסה אז אוסיף שיש ל SAS יכולת לקרוא ולכתוב ישירות מקבצי ZIP.

ראו לדוגמה את הבלוג הזה: https://blogs.sas.com/content/sasdummy/2015/05/11/using-filename-zip-to-unzip-and-read-data-files-in... 

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand in the Innovate Hub.

Watch Now →
Discussion stats
  • 1 reply
  • 904 views
  • 3 likes
  • 2 in conversation