در این بخش با توابعی در پاورکوئری آشنا خواهیم شد که با استفاده از آنها میتوان یک فیلد از رکورد را حذف نموده یا فیلد جدیدی به رکورد اضافه نمود. این توابع عبارتاند از
Record.AddField
اگر بخواهیم یک فیلد به یک رکورد مرجع اضافه کنیم، از تابع Record.AddField بهصورت ذیل استفاده خواهد شد.
Record.AddField( record as record, fieldName as text, value as any, optional delayed as nullable logical ) as record |
این تابع چهار ورودی به شرح ذیل دریافت میکند.
- در ورودی اول این تابع رکورد مرجع که میخواهیم فیلد جدید به آن اضافه کنیم ثبت میگردد.
- نام فیلد جدید که میخواهیم به رکورد مرجع اضافه شود، در ورودی دوم این تابع بهصورت یک مقدار متنی آورده میشود.
- در ورودی سوم مقدار فیلد جدید وارد میشود.
- ورودی چهارم این تابع اختیاری بوده و بهصورت True یا False تعریف میگردد.
با توجه به توضیحات فوق اگر بخواهیم به یک رکورد شامل دو فیلد A و B فیلد جدید C با مقدار ۱۰ را اضافه کنیم، میتوانیم از فرمول ذیل استفاده کنیم.
= Record.AddField([A=5,B=2],”C”,10)
در این حالت نتیجه بهصورت رکورد ذیل به دست میآید که شامل کل فیلدهای A، B و C خواهد بود.
[A=5,B=2,C=10]
Record.Combine
اگر بخواهیم بهطور همزمان بیش از یک فیلد را به یک رکورد اضافه کرد یا چند رکورد را باهم دیگر ترکیب نمود، کافی است تمامی رکوردها را درون یک لیست ثبت کرد و بهعنوان ورودی اول تابع Record.Combine بهصورت ذیل استفاده نمود.
Record.Combine(records as list) as record |
در این صورت نتیجه برابر است به یک رکورد که از ترکیب تمامی رکوردها بهدستآمده است.
برای مثال اگر دو رکورد را بخواهیم با یکدیگر ترکیب کنیم، میتوان از فرمول ذیل استفاده کنیم که نتیجه آن برابر است با [A=5,B=2,C=10]
= Record.Combine({[A=5,B=2],[C=10]})
با در حالت مشابه، نتیجه فرمول ذیل برابر است با [A=5,B=2,C=10,D=2*C,E=1]
= Record.Combine({[A=5,B=2],[C=10,D=2*C,E=1]})
Record.SelectFields
تابع Record.SelectFields بهمنظور استخراج یک رکورد (زیرمجموعه) از رکورد مرجع بهصورت ذیل مورداستفاده قرار میگیرد.
Record.SelectFields(
record as record, fields as any, optional missingField as nullable number ) as record |
این تابع ۳ ورودی به شرح ذیل دریافت میکند.
- در ورودی اول این تابع رکورد مرجع تعریف میگردد.
- در ورودی دوم این تابع لیست فیلدهایی از رکورد مرجع که میخواهیم در رکورد خروجی نمایش داده شود وارد میشود.
- این ورودی اختیاری بوده و با استفاده از آن مشخص میکنیم اگر فیلدی از فیلدهای تعریف شده در ورود دوم در لیست فیلدهای رکورد مرجع وجود نداشته باشد، چه خروجی نمایش داده شود. در صورت واردکردن عدد ۰، نتیجه برابر با خطا خواهد بود، در صورت واردکردن عدد ۱، فیلدهایی ناموجود از خروجی حذف میشوند و در صورت واردکردن عدد ۲، فیلدهای نامنطبق در خروجی نمایش داده خواهد شد ولی مقدار آنها برابر با null است.
با توجه به توضیحات فوق، حاصل فرمول ذیل برابر است با [A=5,C=10]
Record.SelectFields([A=5,B=2,C=10,D=12],{“A”,”C”})
و حاصل فرمول ذیل برابر با خطا است
= Record.SelectFields([A=5,B=2,C=10,D=12],{“A”,”C”,”N”})
درحالیکه با واردکردن عدد ۱ در ورودی سوم، نتیجه بهصورت ذیل به دست میآید،
= Record.SelectFields([A=5,B=2,C=10,D=12],{“A”,”C”,”N”},1)
و در صورت واردکردن عدد ۲ در ورودی سوم، نتیجه بهصورت ذیل به دست میآید.
= Record.SelectFields([A=5,B=2,C=10,D=12],{“A”,”C”,”N”},2)
Record.RemoveFields
بهمنظور حذف یک یا چند فیلد از یک رکورد، از تابع Record.RemoveFields بهصورت ذیل استفاده میشود.
Record.RemoveFields( record as record, fields as any, optional missingField as nullable number ) as record |
این تابع سه ورودی به شرح ذیل دریافت میکند.
- در ورودی اول این تابع رکورد مرجع ثبت میشود.
- در ورودی دوم این تابع نام فیلدهایی که میخواهیم حذف کنیم درون یک لیست ثبت میگردد. (اگر فقط یک فیلد مدنظر باشد، کافی است آن را درون دابل کوتیشن قرارداد، ولی اگر بیش از یک فیلد را بخواهیم حذف کنیم، باید آن را درون لیست قرارداد)
- این ورودی اختیاری بوده و برای زمانی مورداستفاده قرار میگیرد که در ورودی دوم نام فیلدی آورده شود که در رکورد مرجع موجود نباشد. در این حالت در صورت واردکردن مقدار ۰ در این ورودی (یا وارد نکردن این ورودی) نتیجه برابر با خطا خواهد بود و در صورت واردکردن اعداد ۱ یا ۲، این عدم انطباق نادیده گرفته میشود.
بر اساس توضیحات فوق، نتیجه فرمول ذیل برابر است با [B=2,C=10,D=20,E=1]
= Record.RemoveFields([A=5,B=2,C=10,D=2*C,E=1],”A”)
و همینطور نتیجه فرمول ذیل برابر است با: [D=20,E=1]
= Record.RemoveFields([A=5,B=2,C=10,D=2*C,E=1],{“A”,”B”,”C”})
و نتیجه فرمول ذیل برابر با خطا خواهد بود
= Record.RemoveFields([A=5,B=2,C=10,D=2*C,E=1],{“A”,”B”,”C”,”X”})
درحالیکه نتیجه فرمول ذیل برابر است با [D=20,E=1]
= Record.RemoveFields([A=5,B=2,C=10,D=2*C,E=1],{“A”,”B”,”C”,”X”},1)
Record.RenameFields
با استفاده از تابع Record.RenameFields میتوان عنوان فیلدها در یک رکورد را بهصورت ذیل تغییر داد.
Record.RenameFields( record as record, renames as list, optional missingField as nullable number ) as record |
این تابع ۳ ورودی به شرح ذیل دارد:
- در ورودی اول این تابع رکورد مرجع که میخواهیم نام یک یا چند فیلد در آن را تغییر دهیم وارد میشود.
- در ورودی دوم باید نام قبلی فیلدها در کنار نام جدید آنها بهصورت یک لیست ثبت گردد. برای مثال اگر بخواهیم فقط نام فیلد A را به X تبدیل کنیم در این ورودی مقدار {“A”,”X”} را وارد میکنیم درحالیکه اگر بخواهیم درک نار فیلد A نام فیلد B را به W تغییر دهیم، باید این ورودی را بهصورت {{“A”,”X”},{“B”,”W”}} تعریف نماییم.
- این ورودی اختیاری بوده و برای زمانی مورداستفاده قرار میگیرد که در ورودی دوم نام فیلدی آورده شود که در رکورد مرجع موجود نباشد. در این حالت در صورت واردکردن مقدار ۰ در این ورودی (یا وارد نکردن این ورودی) نتیجه برابر با خطا خواهد بود و در صورت واردکردن اعداد ۱ یا ۲، این عدم انطباق نادیده گرفته میشود.
بر اساس توضیحات فوق، حالتهای مختلف این تابع در جدول ذیل آورده شده است.
فرمول | نتیجه |
= Record.RenameFields([A=5,B=2,C=10],{“A”,”X”}) |
[X=5,B=2,C=10] |
= Record.RenameFields([A=5,B=2,C=10],{{“A”,”X”},{“B”,”W”}}) |
[X=5,W=2,C=10] |
= Record.RenameFields([A=5,B=2,C=10],{“U”,”X”}) |
خطا |
= Record.RenameFields([A=5,B=2,C=10],{“U”,”X”},1) |
[A=5,B=2,C=10] |
Record.ReorderFields
بهمنظور جابهجا کردن ترتیب فیلدها در یک لیست، میتوان از این تابع بهصورت ذیل استفاده کرد.
Record.ReorderFields( record as record, fieldOrder as list, optional missingField as nullable number ) as record |
این تابع ۳ ورودی به شرح ذیل دارد
- در ورودی اول آن رکورد مرجع که میخواهیم ترتیب فیلدهای آن را تغییر دهیم وارد میکنیم.
- در ورودی دوم نام فیلدها در یک لیست به ترتیب مدنظر آورده میشود. در این ورودی نیازی نیست اسم تمامی فیلدها را بیاوریم و در صورت نیاوردن نام چند لیست، آنها به همان ترتیب قبلی بعد از فیلدهایی که نام آنها آورده شده است آورده خواهد شد.
- این ورودی اختیاری بوده و برای زمانی مورداستفاده قرار میگیرد که در ورودی دوم نام فیلدی آورده شود که در رکورد مرجع موجود نباشد. در این حالت در صورت واردکردن مقدار ۰ در این ورودی (یا وارد نکردن این ورودی) نتیجه برابر با خطا خواهد بود و در صورت واردکردن اعداد ۱ یا ۲، این عدم انطباق نادیده گرفته میشود.
در جدول ذیل مثالهای مختلف از این تابع آورده شده است.
نتیجه | فرمول |
[C=10,B=2,A=5] |
= Record.ReorderFields([A=5,B=2,C=10],{“C”,”B”,”A”}) |
خطا |
= Record.ReorderFields([A=5,B=2,C=10],{“X”,”B”,”A”}) |
[B=2,C=10,A=5] |
= Record.ReorderFields([A=5,B=2,C=10],{“X”,”B”,”A”},1) |
× Record.TransformFields
با استفاده از این تابع میتوان فرمت مقادیر ثبتشده در فیلدهای مختلف یک رکورد را بهصورت ذیل تغییر داد.
Record.TransformFields( record as record, transformOperations as list, optional missingField as nullable number ) as record |
برای مثال اگر مقدار یک فیلد بهجای عدد ۱۰۰ بهصورت تکست “۱۰۰” ثبتشده باشد، با این تابع میتوان فرمت این فیلد را به عدد برگرداند. این تابع سه ورودی به شرح ذیل دریافت میکند.
- ورودی اول این تابع بیانگر رکورد مرجع است.
- نام فیلدهایی که میخواهیم فرمت آنها را تغییر دهیم به همراه فرمت جدید درون لیستهایی دو عضوی که خود درون یک لیست مرجع قرارگرفتهاند در این لیست تعریف میگردد.
- این ورودی اختیاری است و با استفاده از آن مشخص میکنیم در صورت ثبت یک فیلد در ورودی دوم این تابع که در رکورد مرجع موجود نیست، چه اتفاقی بیفتد.
با استفاده از این تابع، نتیجه فرمول ذیل بهصورت [A=”۴”,B=4,C=4] است.
Record.TransformFields([A=”۴”,B=4,C=”۴”],{C, Number.FromText})