שתף באמצעות


סוגי נתונים

הערה

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

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

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

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

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

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!
שי blank רוזן Welcome John Doe!
blank blank רוזן Welcome Doe!
blank blank blank 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 היום וזה הסוג של כל המספרים. Decimal תמיכה באפשרות זו תתווסף בקרוב.

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

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

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

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

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

Decimal אפשרות זו משמשת למתמטיקה כמו שלמדת בבית הספר, תוך שימוש בבסיס 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 היום וזה הסוג של כל המספרים. Decimal תמיכה באפשרות זו תתווסף בקרוב.

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

  • מספרים מילוליים בנוסחאות. המספר 1.234 יתפרש כערך עשרוני. לדוגמה, הנוסחה 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 הוא ברירת המחדל לסוג הנתונים המילולי ורוב הפונקציות המספריות ישמרו על הסוג, קל יחסית להימנע ממעבר ל- Float אם לא רוצים לעשות זאת.

לדוגמה, שקול את החישוב הבא באמצעות 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 עשוי להכיל את התוויות חייב במס ולא חייב במס, שתואמות לערכים true ו- false בהתאמה. לצורך ההמחשה, ניתן להשתמש בנוסחה זו:

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

ניתן גם להשתמש בנוסחה שוות-ערך זו:

If( ThisItem.Taxable, ...