שתף באמצעות


סוג נתונים אובייקט לא מסווג

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

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

סוגים פשוטים

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

הדוגמאות הבאות ממירות את הערך של של משתנה אובייקט לא מסווג בשם UOValue.

Text(UOValue)
Value(UOValue)

הטבלה הבאה מפרטת את סוגי הנתונים והפונקציות התואמות להמרת אובייקט לא מסווג לסוג הנתונים הזה.

סוג נתונים פונקציה תיאור‬‏‫‬
בוליאני‬‬ Boolean() בעת המרת אובייקט לא מסווג לבוליאני, הערך הבסיסי צריך לייצג ערך בוליאני או סוג שניתן להמיר אוטומטית (כגון מחרוזת "true").
Color ColorValue() או RGBA() ניתן לייצג צבעים בסימון הגדרת צבע כמחרוזת מסוג גיליון סגנונות מדורג (CSS), או כרכיבי RGBA בודדים. ניתן להמיר ישירות את האובייקט הלא מסווג מחרוזת הגדרת צבעים מסוג גיליון סגנונות מדורג (CSS) באמצעות פונקציית ‏()ColorValue, או מ- RGBA בודד מספרים לצבע באמצעות הפונקציה ()‏RGBA.
מספר, מטבע ערך() בעת המרת אובייקט לא מסווג למספר, הערך הבסיסי צריך לייצג ערך מספר או סוג שניתן להמיר אוטומטית (כגון מחרוזת "123.456").
תאריך, תאריך ושעה, שעה DateValue(), TimeValue() או DateTimeValue() ניתן להמיר ישירות תאריך, שעה ותאריך ושעה מאובייקט לא מסווג לסוג שלהם בהתאמה, כאשר מיוצג בפורמט ISO 8601. יש להמיר פורמטים אחרים תחילה לטקסט באמצעות הפונקציה Text() ולאחר מכן להעביר אותם לתוך הפונקציה ‏()DateValue‏, ()TimeValue או ()DateTimeValue שכברירת מחדל תשתמש בשפת ההגדרות של המשתמש הנוכחי כדי לפרש את התאריך והשעה.
Guid GUID()‎ ניתן להמיר אובייקט לא מסווג ישירות ל-GUID אם האובייקט הבסיסי מייצג GUID, או אם הוא מייצג מחרוזת.
היפר-קישור, תמונה, מדיה Text() סוגי נתונים אלה הם מסוג טקסט, וניתן להמירם לטקסט ולאחר מכן להשתמש בהם Power Fx.
בחירה, שתי אפשרויות Switch() או If() בחירות ושתי אפשרויות מוצגים כמחרוזות מקומיות ב- Power Fx. בחירות מגובים במספר ושתי אפשרויות בתור בוליאנים. אין המרה ישירה מבוליאני, מספר או מחרוזת לבחירה או לשתי אפשרויות, אבל בפונקיצות Switch() אוֹ If‎() ניתן להשתמש בערך בוליאני, טקסט או מספר כדי להקצות נכון את הערך בחירה או שתי אפשרויות.
רשומה לא זמין אין המרה ישירה מאובייקט לא מסווג למבנה רשומות, אך ניתן לאחזר שדות בודדים מהאובייקט הלא מסווג כדי ליצור רשומה חדשה.
הפניה לרשומה לא זמין הפניות לרשומות הן ייחודיות למקורות נתונים ואין להן ייצוג משמעותי באובייקטים לא מסווגים.
Table Table() ו- ForAll() אובייקט לא מסווג יכול לייצג מערך, אותו ניתן להמיר לטבלה. אובייקטים אלו יכולים להיות מערכים של רשומות, או מערכים של ערכים שהם למעשה טבלאות בעלות עמודה אחת. ForAll() יכול לשמש ליצירת טבלה עם רשומות מסווגות במלואן. עיין בדוגמאות בהמשך מאמר זה לקבלת מידע נוסף.
טקסט Text() ניתן להמיר טקסט ישירות. אם אובייקט לא מסווג מייצג מספר, אתה צריך להמיר את באובייקט הלא מסווג למספר תחילה באמצעות ()Value לפני ההמרה לטקסט.

סוגי רשומות

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

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

הדוגמאות הבאות משתמשות בשדות ממשתנה של אובייקט לא מסווג בשם UORecord.

Text(UORecord.StringField)
Value(UORecord.Field.ChildField)

במקרה שבו שם שדה מורכב משם מזהה לא חוקי, למשל כאשר שמות השדות מתחילים במספר או מכילים תווים לא חוקיים כגון מקף, ניתן לשים את שמות השדות תוך גרשיים בודדים:

untyped.'01'
untyped.'my-field'

מערכים

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

לדוגמה, כדי לקבל את המספר השני במערך של אובייקט לא מסווג המכיל ערכי מספר ([1, 2, 3]), ניתן להשתמש בנוסחה הבאה כדי להמיר את העמודה למספר:

Value( Index( UOArray, 2 ) )

אם אובייקט לא מסווג הומר לTable(), השורה השנייה בטבלה של עמודה אחת שנוצרה היא עמודה Value המכילה את האובייקט הלא מסווג:

Value( Index( Table( UOArray ), 2 ).Value )

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

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

Text( Index( UORecordArray, 2 ).Field )

בעת שימוש בפונקציה Table(), ראשית אחזר את העמודה Value עם העמודה הבודדת כדי לקבל אובייקט לא מסווג, וגש לעמודה Field:

Text( Index( Table( UORecordArray ), 2 ).Value.Field )

כדי להמיר מערך רשומות לטבלה מוקלדת, אתה יכול להשתמש בפונקציה ForAll() ולהמיר כל שדה בנפרד.

ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )

אם אובייקט לא מסווג מומר תחילה לטבלה, שוב, הטבלה המתקבלת בעמודה אחת של אובייקט לא מסווג תדרוש ממך להשתמש בעמודה Value כדי לקבל את השדות.

ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )