שתף דרך


סוגי נתונים

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

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

סוג נתונים Description דוגמאות
בוליאני‬ ערך true או false. באפשרותך להשתמש בו ישירות בפונקציות If, Filter ופונקציות אחרות ללא השוואה. אמת
אפשרות בחירה בחירה מתוך קבוצת אפשרויות, בגיבוי מספר. סוג נתונים זה משלב תווית טקסט שניתן להתאים לשפות אחרות‬ עם ערך מספרי. התווית מופיעה ביישום והערך המספרי מאוחסן ומשמש להשוואות. הפונקציה Type תומכת בסוג נתונים זה אם אתה משתמש במופע של שדה בחירה לפי שם. ThisItem.OrderStatus
Color‎ מפרט צבע הכולל ערוץ אלפא. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
מטבע ערך מטבע המאוחסן במספר נקודה צפה. ערכי מטבע זהים לערכי מספר עם אפשרויות עיצוב מטבע. הפונקציה Type אינה תומכת בסוג הנתונים 'מטבע'. 123
4.56
תאריך תאריך ללא שעה, באזור הזמן של משתמש היישום. תאריך( 2019, 5, 16 )
תאריך ושעה תאריך עם שעה, באזור הזמן של משתמש היישום. DateTimeValue( "16 במאי 2019 1:23:09 PM" )
Decimal מספר עם דיוק גבוה, פעולות בסיס 10 וטווח מוגבל. 123
עשרוני ("1.2345" )
דינאמי (לשעבר UntypedObject) סוג הערך דינאמי ועשויים להשתנות בזמן ריצה. ערך דינאמי יכול להיות כל סוג קיים, ובאפשרותך להמיר אותו לסוגים תואמים באמצעות פונקציות כגון Boolean(), Value(), Table(), וכו'. לקבלת מידע נוסף, ראה ערכים דינאמיים ועבודהעם JSON. ParseJSON("{ ‏""Field"" :‏ 1234 }").‏Field
Float מספר עם דיוק רגיל, פעולות בסיס 2 וטווח רחב. 123
8.903e121
1.234E-200
Guid מזהה ייחודי כללי. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
היפר-קישור מחרוזת טקסט המכילה היפר-קישור. ";תשמיע את המילים:https://powerapps.microsoft.com"
Image מחרוזת טקסט של מזהה משאב אוניברסלי (URI) לתמונה ב- .jpeg, .png, .svg, .gifאו תבנית נפוצה אחרת של תמונת אינטרנט. הפונקציה Type אינה תומכת בסוג הנתונים 'תמונה'. MyImage נוסף כמשאב יישום
";תשמיע את המילים:https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
מדיה מחרוזת טקסט של URI להקלטת שמע או וידאו. הפונקציה Type אינה תומכת בסוג הנתונים 'מדיה'. MyVideo נוסף כמשאב יישום
";תשמיע את המילים:https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
מספר כינוי עבור עשרוני (רוב מארחי Power Fx) או Float (יישומי בד ציור). אם באפשרותך להשתמש בכל אחד ממגוון המקרים, השתמש במספר לצורך תאימות מרבית. 123
0.0123
1e4
רשומה רשומה של ערכי נתונים. סוג נתונים מורכב זה מכיל מופעים של סוגי נתונים אחרים המפורטים במאמר זה. לקבלת מידע נוסף, ראה עבודה עם טבלאות. הפונקציה Type תומכת בסוג נתונים זה אם אתה משתמש במופע של רשומה. { חברה: "Northwind Traders",
הצוות: 35,
ללא מטרות רווח: false }
הפניה לרשומה הפניה לרשומה בטבלה. הפניות אלה משמשות לעתים קרובות עם בדיקות מידע פולימוריות. לקבלת מידע נוסף, ראה עבודה עם הפניות. הפונקציה Type אינה תומכת בסוג נתונים זה. First(Accounts).Owner
טבלה טבלת רשומות. כל הרשומות חייבות לכלול את אותם שמות שדות וסוגי נתונים, ושדות מושמטים מטופלים כריקים. סוג נתונים מורכב זה מכיל מופעים של סוגי נתונים אחרים המפורטים במאמר זה. לקבלת מידע נוסף, ראה עבודה עם טבלאות. הפונקציה Type תומכת בסוג נתונים זה אם אתה משתמש במופע של טבלה. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
טקסט מחרוזת טקסט של Unicode. "Hello, World"‎
זמן שעה ללא תאריך, באזור הזמן של משתמש היישום. זמן ( 11, 23, 45 )
תוקף מבוטל בשימוש רק על-ידי אופן פעולה של פונקציות המוגדרות על-ידי המשתמש, הוא מציין שלפונקציה אין סוג החזרה. הפונקציה Type אינה תומכת בסוג נתונים זה. למרות שפונקציה אינה מכילה סוג החזרה או ערך החזרה, היא תמיד יכולה להחזיר שגיאה. Hi(): void = { notify( "שלום!" ) }
כן/לא בחירה מתוך קבוצה של שתי אפשרויות, בגיבוי ערך בוליאני. סוג נתונים זה משלב תווית טקסט שניתן להתאים לשפות אחרות‬ עם ערך בוליאני. התווית מופיעה ביישום והערך הבוליאני מאוחסן ומשמש להשוואות. הפונקציה Type תומכת בסוג נתונים זה אם אתה משתמש במופע של שדה 'כן/לא' לפי שם. ThisItem.Taxable

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

Blank

לכל סוגי הנתונים יכול להיות ערך ריק (ללא ערך). לרוב, משתמשים במונח "null" במסדי נתונים עבור מושג זה.

השתמש בפונקציה Blank עם הפונקציה Set או Patch כדי להגדיר משתנה או שדה לריק. לדוגמה, Set( x, Blank() ) מסיר את הערך במשתנה הכללי x.

בדוק אם יש ערך ריק עם הפונקציה IsBlank . החלף ערכי ריק אפשריים בערכים שאינם ריק באמצעות הפונקציה Coalesce.

מאחר שכל סוגי הנתונים תומכים ריקים, סוגי הנתונים של האפשרויות בוליאני ושתי אפשרויות כוללים שלושה ערכים אפשריים.

כל ארבעת סוגי הנתונים הללו מבוססים על מחרוזת טקסט Unicode.

טקסט מוטבע

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

Notify( "Jane said ""Hello, World!""" )

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

הודעה מוקפצת עם ההודעה Jane said

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

אינטרפולציה של מחרוזת

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

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

לדוגמה, שקול את הנוסחה הזו שבה המשתנה הגלובלי תפוחים מוגדר ל- 3 ו- בננות מוגדר ל- 4:

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

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

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

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"

אם NickName מוגדר כ'יוסי', הנוסחה הזו מייצרת את מחרוזת הטקסט ברוך הבא יוסי, נעים להכיר!. אבל אם המשתנה NickNameריק והמשתנה FirstName‎ הוא 'יוסף', הנוסחה הזו מייצרת יוסף היקר, נעים להכיר! במקום זאת.

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

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

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

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
פרטי אמצעי משפחה תוצאה
שי אברהם רוזן Welcome John Quincy Doe!
שי ריק רוזן Welcome John Doe!
ריק ריק רוזן Welcome Doe!
ריק ריק ריק Welcome Friend!

שורות חדשות

מחרוזות טקסט מוטבעות יכולות להכיל שורות חדשות. לדוגמה, שקול להגדיר את המאפיין Text של פקד Label באופן הבא:

"Line 1
Line 2
Line 3"

הנוסחה יוצרת שלוש שורות שמוצגות בפקד התווית:

מחרוזת טקסט מוטבע ופקד תווית שמציגים שלוש שורות עם שורה 1, שורה 2 ושורה 3.

שורות חדשות נתמכים גם באינטרפולציה של מחרוזות:

$"Line {1}
Line {1+1}
Line {1+1+1}"

התוצאה היא אותו פלט:

נוסחת אינטרפולציה של מחרוזת ופקד תווית שמציגים שלוש שורות עם שורה 1, שורה 2 ושורה 3.

משאבי תמונה ומדיה

באמצעות התפריט קובץ, ניתן להוסיף קבצי תמונה, וידאו ושמע כמשאבי יישום. שם הקובץ המיובא הופך לשם המשאב ביישום. בגרפיקה זו, הסמל של Northwind Traders, שנקרא nwindlogo, נוסף ליישום:

משאב של Northwind.

כדי להשתמש במשאב זה ביישום, ציין אותו במאפיין Image‎ של פקד ‎Image:

תמונה של Northwind.

מזהי URI לתמונות ולמדיה אחרת

ניתן להעמיק עוד בדוגמה האחרונה על-ידי הגדרת המאפיין Text‎ של פקד Label ל- nwindlogo. התווית מציגה מחרוזת טקסט:

טקסט של Northwind.

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

לדוגמה, המאפיין Image של פקד תמונה מקבל לא רק משאבי יישום אלא גם קישורים לתמונות באינטרנט, כגון "https://northwindtraders.com/logo.jpg". המאפיין גם מקבל תמונות מוטבעות שמשתמשות בסכימת URI של נתונים, כמו בדוגמה זו:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

ה- URI מציג גירסה מורחבת של שני יהלומים סגולים:

יהלומים כפולים.

תוכל להציג את התמונה האחרונה שצולמה בפקד Camera‎ אם תגדיר את המאפיין Image של פקד תמונה למאפיין Photo של פקד ה- camera. היישום שומר את התמונה בזיכרון, והמאפיין Photo של פקד המצלמה מחזיר הפניה של URI לתמונה. לדוגמה, אתה עשוי לצלם תמונה, והמאפיין Photo‎ של המצלמה עשוי להחזיר "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

אתה משתמש ב- URI כדי ליצור הפניה לקובץ תמונה או לקובץ מדיה אחר המאוחסן במסד נתונים. בדרך זו, היישום לא מאחזר את הנתונים בפועל עד שהם נדרשים. לדוגמה, קובץ מצורף בטבלה של Microsoft Dataverse עשוי להחזיר "appres://datasources/Contacts/table/..." בדומה לדוגמת המצלמה, תוכל להציג תמונה זו על-ידי הגדרת המאפיין Image‎ של פקד תמונה להפניה זו, שמאחזרת את הנתונים הבינאריים.

כשאתה שומר סוג נתונים של מדיה, כגון תמונה, במסד נתונים, היישום שולח את נתוני התמונה או המדיה בפועל, ולא את ההפניה של URI.

מגבלות גודל

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

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

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

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

מספרים

הערה

Power Apps תומך רק ב- Float today, והוא הסוג של כל המספרים. Decimal תמיכה באפשרות זו תתווסף בקרוב.

Power Fx תומך בשני סוגים של מספרים: Decimal ו- Float (עם מילים נרדפות Number ו- Currency).

Decimal הוא האפשרות הטובה ביותר עבור רוב החישובים העסקיים. הוא יכול לייצג במדויק מספרים בבסיס 10, כלומר ש- 0.1 יכול לייצג אותם במדויק, וימנע שגיאות עיגול במהלך חישובים. יש לו טווח גדול מספיק לכל צורך עסקי, עד 1028 עם דיוק ברמה של עד 28 ספרות. Decimal הוא סוג הנתונים המספרי המוגדר כברירת מחדל עבור רוב מארחי Power Fx, בשימוש אם פשוט כותבים 2*2.

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

מספרים עשרוניים

סוג הנתונים Decimal משתמש לרוב ב- סוג נתונים עשרוני .NET. מארחים מסוימים, כגון עמודות נוסחה מסוג Dataverse שיפעלו ב- SQL Server, משתמשים בסוג הנתונים העשרוני של SQL Server.

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

הטווח הוא מ- 79,228,162,514,264,337,593,543,950,335 חיובי עד 79,228,162,514,264,337,593,543,950,335 שלילי. ניתן למקם את המפריד העשרוני בכל מקום בתוך המספרים הללו, לספק עד 28 ספרות של דיוק, ועדיין להיות מיוצג במדויק. לדוגמה, ניתן לייצג את 79,228,162,514,264.337593543950335 במדויק, וכך גם את 7.9228162514264337593543950335.

מספרים עם נקודה צפה

סוג הנתונים Float, שנקרא גם Number או Currency, משתמש בתקן IEEE 754 לנקודה צפה עם רמת דיוק כפולה. תקן זה מספק טווח רחב מאוד של מספרים שניתן לעבוד בהם, החל מ- ‎–1.79769 x 10308 ועד ‎1.79769 x 10308. הערך הקטן ביותר שניתן לייצג הוא ‎5 x 10–324.

Float יכול לייצג בדיוק מספרים שלמים בין –9,007,199,254,740,991 (–(253 – 1)) לבין 9,007,199,254,740,991 (253 – 1), כולל. טווח זה גדול יותר מסוגי הנתונים של מספרים שלמים של 32 סיביות (או 4 בתים) שבהם מסדי נתונים משתמשים בדרך כלל. עם זאת, יישומי בד ציור אינם יכולים לייצג סוגי נתונים של מספרים שלמים של 64 סיביות (או 8 בתים). מומלץ לאחסן את המספר בשדה טקסט או להשתמש בעמודה מחושבת כדי ליצור עותק של המספר בשדה טקסט, כך שהוא ממופה לסוג נתונים טקסט ביישום בד הציור. באופן זה תוכל להחזיק, להציג ולהזין ערכים אלה ולהשוות ביניהם כדי לקבוע אם הם שווים; עם זאת, לא תוכל לבצע עליהם חישובים מספריים בצורה זו.

אריתמטיקה של נקודה צפה היא משוערת, כך שלפעמים היא עשויה להוביל לתוצאות בלתי צפויות עם דוגמאות מתועדות רבות. אתה עשוי לצפות לכך שהנוסחה 55 / 100 * 100 תחזיר בדיוק את הערך 55 ושהנוסחה ‏(55 / 100 * 100) -‎55 תחזיר בדיוק את הערך אפס. עם זאת, הנוסחה האחרונה מחזירה ‎7.1054 x 10–15, שהוא ערך קטן מאוד, אך לא אפס. לרוב, הבדל זעיר זה אינו גורם לבעיה והיישום מעגל אותו בעת הצגת התוצאה. עם זאת, הבדלים קטנים יכולים להיווצר בחישובים הבאים ולגרום לכך שהתשובות יוצגו כלא נכונות.

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

ברירות מחדל והמרות

הערה

Power Apps תומך רק ב- Float today, והוא הסוג של כל המספרים. Decimal תמיכה באפשרות זו תתווסף בקרוב.

רוב מארחי Power Fx משתמשים ב- Decimal כברירת מחדל. ברירת מחדל זו פירושה:

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

כדי לעבוד עם ערכי Float, משתמשים בפונקציה Float. אם נרחיב את הדוגמה שלנו, Float( 1.234 ) ממיר את Decimal1.234 ל- Float. Float יכול לשמש גם כתחליף של Value כדי להמיר מחרוזת המכילה מספר נקודה צפה כגון Float( "1.234" ) לערך Float, שנדרש אם לא ניתן לייצג את המספר בצורה של Decimal.

לסיכום:

שימוש Decimal Float
מספרים מילוליים בנוסחאות 1.234 Float( 1.234 )
Float( "1.234" )
המרה ממחרוזת טקסט Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
המרה בין סוגים מספריים Decimal( float ) Float( decimal )
המרה למחרוזת טקסט Text( decimal ) Text( float )

ערבוב סוגים מספריים

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

לדוגמה, שקול את החישוב הבא באמצעות pac power-fx repl לאחר התקנת Power Platform CLI. מכיוון ששני המספרים הם Decimal, החישוב נעשה בצורה של Decimal, והתוצאה שומרת על דיוק מלא:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

אם במקום זאת, האופרנד השני היה משתנה ל- Float, כל החישוב ייעשה עם Float והחלק של השבר הקטן יאבד:

>> 1.0000000000000000000000000001 * Float(2)
2

תאריך, שעה ותאריך ושעה

אזורי זמן

הערכים תאריך/שעה שייכים לקטגוריות הבאות:

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

בטבלה זו מוצגות כמה דוגמאות:

סוג תאריך/שעה ערך שאוחסן במסד הנתונים ערך שהוצג והוזן 7 שעות מערבית ל- UTC ערך שהוצג והוזן 4 שעות מזרחית ל- UTC
זמן מקומי של משתמש יום ראשון,19במאי,2019
4:00
יום שבת,18במאי,2019
21:00
יום ראשון,19במאי,2019
8:00
לא תלוי באזור זמן יום ראשון,19במאי,2019
4:00
יום ראשון,19במאי,2019
4:00
יום ראשון,19במאי,2019
4:00

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

השתמש בפונקציות DateAdd ו- TimeZoneInformation כדי להמיר זמן מקומי ל- UTC ולהיפך. עיין בדוגמאות בסוף התיעוד עבור פונקציות אלה.

שווי ערך מספריים

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

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

ניתן לצפות בהתנהגות זו ביתר קלות על-ידי שימוש בפונקציה Value כדי לגשת לערך המספרי הבסיסי עבור ערך תאריך/שעה. פונקציה זו מחזירה את הערך תאריך/שעה כמספר אלפיות השנייה מאז ה- 1 בינואר, 1970 ‎00:00:00.000 UTC.

מכיוון שכל ערך תאריך/שעה נשמר ב- UTC, הנוסחה Value( Date( 1970, 1, 1 ) )‎ לא תחזיר אפס ברוב חלקי העולם מכיוון שהפונקציה ‎Date מחזירה תאריך ב- UTC. לדוגמה, הנוסחה תחזיר 28,800,000 באזור זמן עם היסט של שמונה שעות מ- UTC. מספר זה משקף את מספר אלפיות השניה בשמונה שעות.

בחזרה לדוגמה:

סוג תאריך/שעה ערך שאוחסן במסד הנתונים ערך שהוצג והוזן 7 שעות מערבית ל- UTC הפונקציה Value מחזירה
זמן מקומי של משתמש יום ראשון,19במאי,2019
4:00
יום שבת,18במאי,2019
21:00
1,558,238,400,000
(יום ראשון,19במאי,2019
‎4:00 UTC)
לא תלוי באזור זמן יום ראשון,19במאי,2019
4:00
יום ראשון,19במאי,2019
4:00
1,558,263,600,000
(יום ראשון,19במאי,2019
‎11:00 UTC)

המרת זמני Unix

זמני Unix משקפים את מספר השניות מאז ה- 1 בינואר, 1970 ‎00:00:00 UTC. מכיוון שיישומי בד ציור משתמשים באלפיות שניה במקום בשניות, ניתן לבצע המרה בין שני הערכים על-ידי כפל או חילוק ב- 1,000.

לדוגמה, זמן Unix מציג את ה- 9 בספטמבר, 2001, שעה 01:46:40 UTC כ- 1,000,000,000. כדי להציג את ערך התאריך/שעה ביישום בד ציור, הכפל את המספר ב- 1,000 כדי להמיר אותו לאלפיות שניה, ולאחר מכן השתמש בו בפונקציה Text. הנוסחה Text( 1000000000 * 1000, DateTimeFormat.UTC )‎ מחזירה את המחרוזת 2001-09-09T01:46:40.000Z.

עם זאת, פונקציה זו מחזירה Saturday, September 8, 2001 18:46:40 אם אתה משתמש בתבנית DateTimeFormat.LongDateTime24 באזור זמן עם היסט של ‎-7 שעות מ- UTC ‏(7 שעות מערבית ל- UTC). תוצאה זו מציגה את הערך תאריך ושעה נכון על סמך אזור הזמן המקומי.

כדי לבצע המרה לזמן Unix, חלק את התוצאה מערך ב- 1,000:
RoundDown( Value( UnixTime ) / 1000, 0 )‎

אם אתה זקוק לזמן Unix בערך תאריך לחישובים נוספים או כדי להציג אותו ב- Power Apps, השתמש בנוסחה הבאה:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )‎

SQL Server

SQL Server כולל את סוגי הנתונים תאריך ושעה, תאריך ושעה2, וסוגי נתונים אחרים של תאריך/שעה שאינם כוללים היסט של אזור זמן ואינם מציינים באיזה אזור זמן הם נמצאים. יישומי בד ציור מניחים שערכים אלה מאוחסנים ב- UTC ומתייחסים אליהם כזמן מקומי של משתמש. אם הערכים נועדו להיות לא תלויים באזור זמן, יש לתקן את תרגומי ה- UTC באמצעות הפונקציה TimeZoneOffset.

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

יישומי בד ציור קוראים וכותבים ערכים של סוג הנתונים שעה ב- SQL Server כמחרוזות טקסט בתבנית משך ISO 8601. לדוגמה, עליך לנתח תבנית מחרוזת זו ולהשתמש בפונקציה Time כדי להמיר את מחרוזת הטקסט "PT2H1M39S"‎ לערך שעה:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

שילוב פרטי תאריך ושעה

הערכים תאריך, שעה ותאריך ושעה הם בעלי שמות שונים, אולם הם מכילים את אותו מידע על תאריכים ושעות.

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

לא מומלץ לבצע הוספה וחיסור של ערכי תאריך ושעה באופן ישיר מכיוון שהמרות של אזור זמן והמרות אחרות עלולות לגרום לתוצאות מבלבלות. השתמש בפונקציה Value כדי להמיר ערכי תאריך/שעה לאלפיות שניה תחילה וקח בחשבון את אזור הזמן של משתמש היישום, או להשתמש בפונקציות DateAdd ו- DateDiff כדי להוסיף לאחד מהערכים הללו או להחסיר ממנו.

בחירות ו'כן/לא'

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

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

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

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

If( ThisItem.OrderStatus = "Active", ...

אבל ניתן להשתמש בנוסחה זו:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

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

גם ערכים עם שתי אפשרויות עשויים לפעול כערכים בוליאניים. לדוגמה, ערך בעל שתי אפשרויות בשם TaxStatus עשוי לכלול את התוויות Taxable ו - Non-Taxable, התואמות ל- True ול- False. כדי להציג זאת, השתמש בנוסחה זו:

If( ThisItem.Taxable = TaxStatus.Taxable, ...

באפשרותך גם להשתמש בנוסחה זו:

If( ThisItem.Taxable, ...