יום שני, 23 באפריל 2012

סוג שדה משתנה בקליקוויו

קליקוויו הוא פורץ דרך בתחומים רבים. מרבים לדבר על הקישור האסוציאטיבי שלו, על התחקור In-Memory ועל העובדה שהוא משלב ETL ותצוגה בכלי אחד (תכונות שבינתיים אומצו ע"י כלים אחרים ואף נחשבות בחלקן כמיינסטרים העתידי).
אבל ישנם תחומים נוספים שבהם קליקוויו מהווה חידוש. אחד מהם הוא העובדה שקליקוויו תומך באפשרות ששדה מסוים הוא גם מספר וגם טקסט.
זוהי תפיסה מהפכנית, לא רק ביחס לעולם הקשוח של בסיסי-הנתונים, שם הגדרת ה-Data Type חקוקה בסלע, אלא ביחס לעולם התוכנה בכלל. אפילו ב-#C בגרסאותיה המתקדמות (מגרסה 2), הפונקציונליות הנקראת Generics מאפשרת אמנם גמישות בהגדרת סוג המשתנה, אבל הגמישות היא רק ב-Design Time. ב-Run Time ייקבע סוג המשתנה והוא יישאר קבוע למשך כל הריצה.
קליקויו מאחסן כל שדה כ-Collection, כאשר אחד המאפיינים של כל אבר הוא IsNumeric, כלומר האם הערך הבודד בכל שדה הוא מספרי או לא. ארכיטקטורה זאת מאפשרת למפתח ליצור שדות שהם בד"כ מספריים אבל יכולים להכיל גם טקסט, מבלי להפסיד את היכולת להתייחס לערכים המספריים ככאלו. למשל, המיון נשאר מיון מספרי בערכים הללו, ובהתאם לכך, אם יש גרף אשר אחד הצירים שלו בנוי על שדה היברידי שכזה, קליקוויו ידע למיין את המספרים נכון, למרות שישנם גם ערכים טקסטואליים (אלו יופיעו בסוף). כמו-כן ניתן להפעיל על השדה פונקציות מספריות (כגון Sum) - קליקוויו יפעיל את הפונקציה על הערכים המספריים ופשוט יתעלם מערכי הטקסט.
כדי לראות זאת בעיניים, נגדיר בסקריפט את הטבלה הבאה:
Array:
load * Inline [
Value
1
2
3
4
Hello
];
ניצור כפתור אשר יריץ את המאקרו הבא:
sub ShowIsNumeric

set val = ActiveDocument.Fields("Value").GetPossibleValues
for i=0 to val.Count-1
       msgbox val.Item(i).IsNumeric
next

end sub
ניתן לראות שעבור ארבעת המספרים, מוצג True (הערך הוא מספרי), ואילו עבור המילה Hello מוצג False.

אין תגובות:

הוסף רשומת תגובה