مطابق با هر نرمافزار دیگر، نرمافزار پاورکوئری، از فرمتهای مختلف داده پشتیبانی میکند و در آن توابع مختلف برای اعمال تغییرات بر روی دادهها با فرمت خاص قابل استفاده میباشند، لذا فرمت دادهها در این نرمافزار بسیار اهمیت دارد.
برای مثال تابع Text.Start برای جداسازی کاراکترهای اول یک متن مورداستفاده قرار میگیرد، اگر ورودی اول آن بهصورت داده متنی باشد، خروجی این تابع برابر با تعدادی از کاراکترهای ابتدایی آن متن است، اما درصورتیکه ورودی اول این تابع عدد یا از فرمتی غیر از متن باشد، خروجی این تابع خطا است. پس بر اساس نوع داده ورودی، نتیجه این تابع بهصورت آورده شده در جدول ذیل متفاوت است.
فرمول | نتیجه |
=Text.Start(“Hello”,۳) | “Hel” |
=Text.Start(“۱۲۳۲”,۲) | “۱۲” |
=Text.Start(1232,2) | Error |
لذا دانستن فرمت دادهها و نحوه تبدیل کردن فرمتهای مختلف داده به یکدیگر بسیار اهمیت دارد. در جدول ذیل انواع فرمت داده به همراه نحوه تعریف آنها آورده شده است.
نحوه تعریف |
نوع داده |
Null |
Null |
true false |
Logical |
۰ ۱ -۱ ۱٫۵ ۲٫۳e-5 |
Number |
#time(09,15,00) |
Time |
#date(2013,02,26) |
Date |
#datetime(2013,02,26, 09,15,00) |
DateTime |
#datetimezone(2013,02,26, 09,15,00, 09,00) |
DateTimeZone |
#duration(0,1,30,0) |
Duration |
“hello” |
Text |
#binary(“AQID”) |
Binary |
{۱, ۲, ۳} |
List |
[ A = 1, B = 2 ] |
Record |
#table({“X”,”Y”},{{0,1},{1,0}}) |
Table |
(x) => x + 1 |
Function |
type { number } type table [ A = any, B = text ] |
Type |
Null
مقدار null بهجای مقادیر وارد نشده در پاورکوئری مورداستفاده قرار میگیرد و بهصورت null تعریف میشود. با فرض آنکه متغیر x در فرمولهای ذیل برابر با null است، عملیات ریاضی مختلف و نتایج حاصل از آن بهصورت جدول ذیل است.
عملیات | نتیجه |
x > y | null |
x >= y | null |
x < y | null |
x <= y | null |
x = y | null |
x <> y | null |
x ?? y | y |
y ?? x | y |
× مقادیر منطقی
این گروه از دادهها شامل دو حالت true یا false است. جهت مقایسه مقادیر این گروه میتوان مقدار true را معادل با عدد ۱ و مقدار false را معادل با عدد ۰ در نظر گرفت. عموماً مقادیر منطقی از مقایسه یک مقدار با مقدار دیگر (مثلاً ۲>3) یا خروجی بعضی از توابع دیگر مانند Number.IsOdd به دست میآیند.
با فرض x و y برابر با مقادیر منطقی، استفاده از عملگرهای and، or و not بهصورت x and y، x or y و not x اصلیترین عملیات بر روی این مقادیر هستند.
× اعداد
گروه بعدی دادهها اعداد میباشند که دامنه بزرگی از مقادیر عددی (صحیح و اعشاری) را شامل میشوند. علاوه بر اعداد دو مقدار #infinity (که از تقسیم عدد مثبت بر صفر به دست میآید) و #-infinity (که از تقسیم عدد منفی بر ۰ به دست میآید) که بیانگر مثبت بینهایت (بزرگترین عدد ممکنه) و منفی بینهایت (کوچکترین عدد ممکنه) هستند نیز در این گروه از دادهها قرار دارند. علاوه بر این مقدار #nan که برابر با تقسیم صفر بر صفر است نیز در این گروه از دادهها قرار دارد.
بهطورکلی هرگونه عملیات ریاضی و مقایسهای مانند x > y, x >= y, x < y, x <= y, x = y, x <> y, x + y, x – y, x * y, x / y, x ?? y, +x بر روی اعداد x و y در محیط پاورکوئری قابل انجام است.
× زمان، تاریخ
فرمتهای مختلفی از داده برای نمایش اطلاعات بهصورت زمان و تاریخ در پاورکوئری وجود دارد. زمانها در پاورکوئری بهصورت #time(Hour, Minute, Second) تعریف میشود که در آن ورودی اول باید بین ۰ تا ۲۳، ورودی دوم و سوم بین۰ تا ۵۹ باشند.
در کنار زمان، تاریخها در پاورکوئری بهصورت #date(Year, Mont, Day) تعریف میشود که در آن مقدار ورودی Year بین ۱ تا ۹۹۹۹ بوده و دو پارامتر دیگر به ترتیب اعداد بین ۱ تا ۱۲ و ۱ تا ۳۱ را میپذیرند.
درصورتیکه بخواهیم مقدار تاریخ و زمان را بهصورت همزمان ثبت نماییم، میتوانیم بهصورت #datetime(year, month, day, hour, minute, second) اطلاعات مدنظر را وارد کرد. در حالت جامعتر این نوع داده، میتوان علاوه بر تاریخ و زمان، منطقه زمانی را نیز وارد نماییم که این پارامتر بهصورت ذیل تعریف میگردد.
#datetimezone( year, month, day, hour, minute, second, offset-hours, offset-minutes) |
که در آن محدوده مجاز هر ورودی بهصورت ذیل است:
۱≤ year ≤ ۹۹۹۹
۱≤ month ≤ ۱۲
۱≤ day ≤ ۳۱
۰≤ hour ≤ ۲۳
۰≤ minute ≤ ۵۹
۰≤ second ≤ ۵۹
-۱۴≤ offset-hours ≤ ۱۴
-۵۹ ≤ offset-minutes ≤ ۵۹
نوع دیگر داده در این گروه بیانگر مدتزمان است که برابر با اختلاف دو مقدار زمانی یا تاریخی است. این نوع داده بهصورت #duration(day,hour,minute,second) در محیط پاورکوئری تعریف میشود.
بهطورکلی علاوه بر توابع مخصوص تاریخ و زمان، هرگونه محاسبات ریاضی یا مقایسه hd بر روی این نوع از دادهها قابل انجام است.
متن
دادههای متنی محدوده گستردهای دارند و بهمنظور تعریف آنها باید آنها را درون ” ” ثبت نمود. مانند “ABC” یا حتی “۲” . در حالتی که یک عدد داخل دابل کوتیشن ثبت شود، فرمت آن به متن تبدیل میشود و دیگر نمیتوانیم عملیات محاسباتی را بر روی آن انجام دهیم.
از بین انواع عملگرها، عملگرهای مقایسهای (<=>) عملگر ؟؟ (بهمنظور بررسی null بودن یک مقدار) و & (بهمنظور به هم چسباندن دو متن) را میتوان برای مقادیر متنی استفاده نمود.
باینری
در پاورکوئری یک مقدار با فرمت باینری برابر با زنجیرهای از بیتها است که فایلها با فرمت خاص را شامل میشود. برای مثال بهمنظور فراخوانی اطلاعات یک فایل اکسل درون محیط پاورکوئری بهصورت جدول، ابتدا اطلاعات بهصورت یک داده با فرمت باینری فراخوانی شده و سپس با استفاده از توابع مختلف آن را به فرمت جدول تبدیل مینماییم.
لیست
لیستها شامل مجموعه از مقادیر با فرمتهای مختلف است. برای سادگی یک لیست را میتوان بهصورت یک ستون از جدول بدون عنوان در نظر گرفت. در پاورکوئری جهت تعریف لیست، کافی است مقادیر مدنظر را درون { } قرارداده و آنها را با استفاده از ویرگول از یکدیگر جدا نمود. برای مثال در ذیل مثالهای متفاوت از لیست آورده شده است.
={۱,۲,۳,۴}
={۱,۲,۳,{۴,۵}}
={۱,”a”,۲,”B”,{“C”,”D”}}
={[a=1,b=2],2,{1},{1,2},[c=2],[d={1,2,3,}]}
رکورد
نوع دیگر داده در محیط پاورکوئری رکورد است. برای سادگی میتوان رکوردها را بهصورت یک ردیف از جدول در نظر گرفت که در آن هر مقدار یک عنوان (هدر) دارد و با آن شناسایی میشود. بهمنظور تعریف رکورد کافی است درون [ ] ابتدا عنوان فیلد و به دنبال آن مقدار فیلد را وارد نمود و فیلدهای مختلف را با ویرگول از هم دیگر جدا نمود. مانند:
[a=1,b=2]
در حالت فوق، رکورد مدنظر دو فیلد با نامهای aو b را دارد که مقدار آنها به ترتیب برابر با ۱ و ۲ است. ازنظر فرمت داده مقدار فیلدهای درون یک رکورد هیچ محدودیتی ندارند و میتوانند انواع حالت ازجمله لیست، رکورد و جدول را شامل شوند.
در ادامه مثالهای مختلف از رکوردها آورده شده است
[a=1,v={1,2,3,4}]
[a=[b=1,c=2],d=[e={1,2,3,4},f=null]]
[a=”xyz”,b={1,2,3}]
جدول
جداول فرمت دادههایی است که در آن اطلاعات در ردیفهای مختلف زیرستونهایی با عنوان مشخص قرار میگیرند. دادههای موجود در جدول میتوانند فرمتهای مختلفی داشته باشند و توابع متفاوتی در پاورکوئری جهت مدیریت جداول وجود دارند. در پاورکوئری میتوان جداول را بهصورت مستقیم ایجاد کرد، یا با فراخوانی اطلاعات از منابع اطلاعاتی دیگر آنها را به وجود آورد. در فصلهای آتی این کتابع بهطور مفصل با جداول و توابع مربوط به آنها آشنا میشویم.
تابع
نوع دیگر داده تابع بوده که در فصلهای آینده بهصورت مفصل به توضیح آنها پرداختهشده است.
تعریف فرمت داده
از بین انواع فرمت داده، حالات خاص آن مانند اعداد، متن، تاریخ و زمان و … دارای تنظیمات مشخص بوده که در جدول ذیل به توضیح آنها پرداختهشده است.
توضیحات | نوع داده | شکل نمایش | نوع داده به انگلیسی |
فرمت متنی یا Text شامل حالات مختلف میشود و در پاورکوئری متنهایی با طول ۲۶۸ میلیون کاراکتر قابلتعریف و استفاده است.
نکته مهم در خصوص متن این است که سایر فرمت داده نیز قابلنمایش بهصورت متنی است و کافی است داده مدنظر را داخل دابل کوتیشن قرارداد. بهعبارتدیگر داده “۳۲۱” بهظاهر از جنس عدد است ولی ازآنجاییکه داخل دابل کوتیشن قراردادهشده است، جنس آن متنی بوده و توابع متنی بر روی آن قابل استفاده میباشند. |
متن | Text | |
دادههای صحیح خطا یا بولون دو حالت True و False را شامل میشوند. | صحیح غلط | True/False | |
این فرمت از دادهها، بیانگر اعداد اعشاری بوده و یکی از رایجترین فرمتهای مورداستفاده برای اعداد است. این فرمت از دادهها میتواند شامل کلیه اعداد اعشاری منفی در محدوده بین –۱٫۷۹E +308 تا –۲٫۲۳E –۳۰۸ بوده و علاوه بر عدد ۰ شامل کلیه اعداد اعشاری مثبت در محدوده ۲٫۲۳E –۳۰۸ تا ۱٫۷۹E + 308 باشد. | عدد
اعشاری |
Decimal number | |
این فرمت که در اکسل بهصورت Currency شناخته میشود و دارای جایگاه مشخصی اعشار است، بهعبارتدیگر با استفاده از این فرمت میتوان اعداد با چهار رقم اعشار و ۱۹ رقم قبل از اعشار را نمایش داد. | عدد
اعشاری طول ثابت |
Fixed decimal number | |
این فرمت از دادهها برای نمایش اعداد صحیح مورداستفاده قرار میگیرد و در آن قسمت اعشاری قابلنمایش نیست. با استفاده از این فرمت میتوان کلیه اعداد در محدوده –۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۷ (–۲^۶۳+۱) تا ۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۶ (۲^۶۳–۲) را نمایش داده. | عدد صحیح | Whole number | |
این فرمت بسیار مشابه با فرمت مربوط به نمایش اعداد اعشاری است، با این تفاوت که در آن اعداد بهصورت درصد نمایش داده میشود. | درصد | Percentage | |
زمانی که بخواهیم فرمت تاریخ و ساعت را بهصورت همزمان در یک مقدار نمایش دهیم از این فرمت استفاده میشود. هر مقدار Date/Time معادل با یک عدد اعشاری است که قابلتبدیل به یکدیگر هستند. (به عبارت دقیقتر، قسمت تاریخ در پاورکوئری بهصورت اعداد صحیح و قسمت ساعت در پاورکوئری بهصورت اعداد اعشاری در نظر گرفته میشوند.)
بنابراین بهراحتی میتوان یک عدد اعشاری یا صحیح را از دادههای این گروه کم یا به آنها اضافه نمود یا برای محاسبه اختلاف دو تاریخ و ساعت، میتوان بهراحتی آن دو را از یکدیگر کسر نمود. |
تاریخ
زمان |
Date/Time | |
این فرمت از دادهها برای نمایش تاریخ مورداستفاده قرار میگیرد و با استفاده از آن میتوان هر تاریخ در بازه سالهای ۱۹۰۰ تا ۹۹۹۹ را نمایش داد.
در منطق پاورکوئری در پشت هر تاریخ، یک عدد صحیح پنهانشده است بهگونهای که تاریخ ۱۹۰۰/۰۱/۰۱ معادل با ۱ در نظر گرفته میشود و همینطور تاریخ ۱۹۰۰/۰۱/۰۲ برابر با عدد ۲ است، پس اگر عدد ۳۶۵ را درون یک سلول داشته باشیم و فرمت آن را به تاریخ تبدیل کنیم، این عدد معادل با تاریخ ۱۹۰۱/۰۱/۰۱ است. با این توضیحات، بهراحتی میتوان یک عدد صحیح را با یک تاریخ در پاورکوئری جمع کرد و یا یک عدد را از تاریخ خاص کم کرد. بهعبارتدیگر اگر یک تاریخ با عدد ۷، جمع شود، نتیجه برابر با تاریخ ۷ روز بعد از تاریخ مرجع است و اگر عدد ۷ از یک تاریخ کسر گردد، نتیجه برابر با تاریخ ۷ روز قبل از تاریخ مرجع است. |
تاریخ | Date | |
برای بیان زمان از این فرمت استفاده میشود. در منطق پاورکوئری، هر زمان برابر با یک عدد اعشاری کوچکتر از ۱ است. بدین منظور اگر ۲۴ ساعت را برابر با عدد ۱ در نظر بگیریم، ساعت ۱۲ ظهر در منطق پاورکوئری برابر با ۰٫۵ است و بهطور مشابه ساعت ۶ صبح معادل با ۰٫۲۵ است.
همواره جمعکردن دو عدد با فرمت زمان، یک عدد با فرمت زمان است. |
زمان | Time | |
این فرمت همانند فرمت تاریخ و زمان بوده با این تفاوت که در آن منطقه زمانی در زمان محاسبات نیز در نظر گرفته میشود ولی بعد از لود شدن دادهها در دیتا مدل، بعد از در نظر گرفتن مقدار مؤثر منطقه زمانی، نتیجه بهصورت تاریخ و زمان ساده نگهداری میشود. | تاریخ
زمان منطقه |
Date/Time /Timezone | |
این فرمت بیانگر بازه زمانی بین دو تاریخ، دو زمان، یا دو مقدار با فرمت تاریخ و زمان است. | مدت زمان | Duration | |
این فرمت از دادهها برای ایجاد دادهها با فرمت باینری مورداستفاده قرار میگیرد. | باینری | Binary | |
زمانی که دادههای یک ستون از فرمت خاصی پیروی نمیکنند یا فرمت دادههای آن ستون توسط کاربر تعیین نشده است، بهطور پیشفرض فرمت دادههای آن ستون بهصورت any است و به معنی آن است که میتواند هر فرمتی باشد. | همه | Any |