معرفی و آشنایی با PowerPivot

شروع آشنایی من  با این ابزار در سال 2010 بود. در واقع مایکروسافت در این سال ابزار Self Service BI خود را به نام PowerPivot تولید کرد. در همان سال بود که مقاله ای مختصری نوشتم و کاربران وب سایت اطلاع دادم که این ابزار وجود دارد و در برخی از سازمانها آنرا معرفی می کردم. مشکل اصلی آنجا بود که دقیقا نمی دانستم PowerPivot چیست و البته هیچ کتاب جدی انگلیسی هم نبود و گمان کنم اولین کتاب را Mr Excel نوشت، واقعا خود نویسنده  دقیقا نمی دانست که PowerPivot چیست ، قطعا در کتاب نتوانسته بود ایده های اصلی آنرا بدهد.

جالب است بدانید که با گذشت حدود 7 سال از ساخت PowerPivot هنوز تعداد نویسنده های کتابهای انگلیسی معتبر و ارزشمند آن از انگشتان یک دست کمتر است!! و این قاعدتا شاید نشان دهند چیزی باشد که در انتهای همین مقاله تحت عنوان "رویکرد انتقادی من به PowerPivot" آنرا مطرح خواهم ساخت.

 

تاریخچه PowerPivot

کاربران اکسل خیلی خوشحال نباشد. اساسا PowerPivot برای اکسل در نبود است در واقع PowerPivot یکی از  ابزارهای محصول SQL Server است و ما کاربران اکسل کاملا خوش شانسی آورده ایم که یک نسخه از آن را به ما هم در اکسل داده اند!

 

در دنیای دیتا بیس‌ها ما با حجم بسیار بزرگی از داده ها ممکن است سر و کار داشته باشیم و برای همین با ابزارهای عادی نمی توانیم با "سرعت" روی این داده ها محاسبه انجام دهیم. در واقع حجم داده ها مثلا در سایتی مانند آمازون و یا شرکت همراه اول خودمان آنقدر بالا است که برای یک جمع زدن ساده مبالغ دریافتی و یا شمارش مشتریان ممکن است با مشکلات جدی مواجه شویم. مثلا در یک شرکت پخش خود من مشاهده کردم که یک گزارش از SQL Server شرکت حدود 6 ساعت طول می کشید تا تولید شود!!!

 

برای این مشکل متخصصان کامپیوتر دست به ساخت ابزارهای که با عنوان کلی OLAP شناخته می شوند، زدند. در یک تعریف خیلی ساده ابزارهای OLAP قرار است که بتوانند با "سرعت" و "در لحظه" بر روی داده های بسیار حجیم یک دیتابیس گزارشها و محاسباتی که لازم داریم، انجام دهند. توجه به واژه های "درلحظه" و "با سرعت" در این تعریف ضروری است . یعنی قرار نیست برای یک محاسبه بیش از چند ثانیه منتظر بمانیم و در ضمن اینکه قرار نیست از قبل گزارش ها محاسبه و ساخته شده باشد و کاربر می توانید "در لحظه" گزارشهای خود را بسازد. (دقیقا مانند Pivot Table در اکسل)

 

باید بدانید که در دنیای هوش تجاری  (Bussiness Inteligence) ابزارهای OLAP در جایگاه اصلی قرار دارند.

 

مایکروسافت ابزار OLAP خود را به نام SQL Analysis Services نامگذاری کرده است که به صورت مخفف به آن SSAS گویند. این ابزار در محصول SQL Server مایکروسافت است و هنگام نصب SQL Server می توانیم آنرا نصب کنیم.

ایده اصلی PowerPivot توسط دو مقاله که توسط Amir Netz نوشته می شود در سال 2006 آغاز می شود. ایشان در یک مقاله صحبت از ابزاری می کند که بتوان با ساخت ابزاری کارهای BI را ساده تر انجام داد. من دقیقا نمی دانم که منظور ایشان از ساده تر چیست اما با قطعیت می توان گفت که یکی از این ساده سازی ها آن است که نیازی به نصب نرم افزار گران قیمت، سنگین و کاملا تخصصی مانند SQL نباشد و پیشنهاد می دهد که در Access محصول PowerPivot پیاده سازی شود.(که البته می دانید که در Excel این اتفاق رخ داد.)

 

ایده دیگری ایشان آن بود که این ابزار جدید داده های را در RAM دستگاه بارگذاری کنید و یک ابزار In Memory باشد. شاید بدانید که RAM کامپیوتر شما بسیار بسیار سریع است و با وجود کامپیوترهای امروزی که چندین CPU و RAMهای بالایی دارند، کاملا منطقی است که این ابزار ساخته شود.

 

سرانجام توسط تیم SQL Server مایکروسافت اولین نسخه های PowerPivot برای Excel و Sharepoint در سال 2010 تولید شد.

 

خلاصه سازی آنچه گفتیم:

* PowerPivot  یکی از اعضای خانواده نرم افزارهای OLAP است.

* PowerPivot در تیم SQL Server مایکروسافت تهیه شده است. (قرار است که از این نکته در پایان مقاله یک نتیجه بگیریم).

* PowerPivot اطلاعات را در RAM دستگاه محاسبه و پردازش می کند.(یعنی بهتر است که RAM بالایی داشته باشیم مثلا 8GB)

 

در همین جا باید اشاره کنم که مایکروسافت قبل از PowerPivot در محصول SSAS خود از روش/تکنولوژی به نام MultiDimentional استفاده می کرده است. با تولد PowerPivot یک روش جدید در SSAS اضافه شد به نام Tabular . در واقع Tabular قرار است که جایگزین روش قدیمی شود.

در واقع دقیق تر است بگوییم که PowerPivot یک ابزار است و این ابزار از تکنولوژی که به آن Tabular می گویند استفاده می کند.

 

در تصویر زیر مشاهده می کنید که برای ایجاد یک پروژه SSAS دو روش Tabular و MultiDimentional وجود دارد:

انواع پروژه در SSAS

 

نکته: ابزار PowerPivot برای ذخیره سازی، فشرده سازی و کار با داده در RAM دستگاه از روشی به نام Tabular استفاده می کند. (واژه Tabular یعنی تکنولوژی پشت صحنه ای که ابزار PowerPivot از آن استفاده می کند).

 

انتظار از PowerPivot چیست

بگذارید در همین ابتدا سه رویکرد را کاملا تفکیک کنیم:

    1) رویکرد یک مهندس کامیپوتر که در حوزه BI به صورت تخصصی فعالیت می کند.

    2) رویکرد یک مهندس کامپیوتر که در حوزه BI به صورت تخصصی در ایران فعالیت می کند.

    3) رویکرد یک کاربر قدیمی و حرفه ای Excel

 

1) برای دانستن رویکردهای متخصصین BI در دنیا باید سراغ Gartner BI Magic Quadrant برویم . در واقع Gartner شرکت/سازمانی است که به صورت حرفه ای در خصوص محصولات مختلف حوزه های IT تحقیق می کند و گزارشهای علمی خود را منتشر می سازد. در یکی از این گزارش ها محصولات BI از زوایای مختلفی بررسی و مقایسه می شوند و در نهایت امتیازی کلی آنها در یک نمودار مانند شکل زیر نمایش داده می شود. این نمودار جایگاه شرکت های مختلف را نمایش می دهد.

 

Gartner BI Magic Quadrant

همانطور که می بینید شرکت Microsoft  و شرکت Tableau در جایگاه بالایی قرار دارند. (توجه کنید که Tableau یک شرکت است و احیانا آنرا با تکنولوژی Tabular اشتباه نگیرد).

سطحی به تصویر بالا ننگرید.  اگر مایکروسافت جایگاه ویژه ای در حوزه BI دارد کاملا ممکن است اصلا ربطی به محصول جدید SSAS آن نداشته باشد و این جایگاه را در حوزه مثلا SQL Server بدست آورده است باید شما گزارش را با دقت بخوانید. توجه داشته باشید که شرکت ها از زوایای مختلفی بررسی می شوند مثلا سرعت پاسخگویی و پشتیبانی فنی یک شرکت کاملا می تواند آنرا از شرکت دیگری متمایز کند.

در واقع با پیش کشیدن این موضوع خواستم اشاره کنم که واقعا ما نمی دانیم که استقبال و اقبال محصول جدید مایکروسافت در دنیا چقدر است؟

 

2) اما در حوزه تخصصی BI ایران چه می گذرد؟ بدیهی است که من فقط با مشاهدات میدانی خودم پاسخی به این سوال خواهم داد و لطفا آنرا با رویکرد انتقادی بخوانید و با سایر افراد حرفه ای که می شناسید، حتما مشورت کنید.

بسیاری از دشبوردها و راهکارهای BI که در ایران ساخته می شود بدون لایه OLAP است!! در واقع به صورت مستقیم با دیتابیس ها کار می کنند و به قول مجید (که از دوستان من است) به صورت مستقیم روی دیتابیس ها SELECT می زنند. در واقع در اکثر شرکت ها داده ها خیلی بزرگ نیست و یک سرور قدرتمند SQL به سادگی از عهده بسیاری از محاسبات بر می آید.

 

در ضمن آنکه پیاده سازی لایه OLAP نیاز به دقت، حوصله و تخصص بالایی دارد و قطعا باعث سخت تر شدن، هزینه بر شدن پروژه می شود که با توجه به حجم دادههای نسبتا کم سازمان های ایران و در نظر گرفتن ده ها عنصر دیگر مانند مشکلات اقتصادی که سالهاست شرکت های ایرانی با آن دست و پنجه نرم می کنند، مانع از آن می شود که در این حوزه شرکت ها مایل به سرمایه گذاری باشند.

دلیل دیگری که می توانم به آن اشاره کنم که در ایران OLAP و SSAS و ...  چنان مورد توجه نیست،نگاهی به دوره هایی آموزشی آن است که حتی در آموزشگاههای قوی و مشهور جایگاهی ندارد. معمولا در سرفصل های آموزشی دوره های BI ، موضوعاتی مانند فرمول نویسی/برنامه نویسی OLAP را یا مشاهده نمی کنید و یا در حد 2 ساعت !  دقت داشته باشید که این مورد نشانه ای جدیی است از عدم استفاده از این ابزارها در ایران.

 

3) اما نگاه صحیح کاربران اکسل به Power Pivot چه باید باشد؟

آیا باید برای یادگیری آن وقت جدی صرف کنیم؟ تفاوت اصلی Power Pivot و Pivot Table اکسل در چیست؟

سعی می کنیم که زاویه دید خودم را برای شما در خصوص این ابزارها تشریح کنم.

 

گفته بودیم که در SSAS ما دو تکنولوژی مختلف داریم. به یکی از آنها Multi Dimentional  می گفتیم (قدیمی تر بود) و به تکنولوژی جدید Tabular می گوییم (که همان PowerPivot است). حال اگر بخواهیم به قدرت و امکانات و سرعت این تکنولوژی ها دسترسی پیدا کنیم باید زبانهای برنامه نویسی آنها را بلد باشید.

 

دقیقا درست خواندید، برنامه نویسی !!!! باید بدانید.

در روش قدیمی زبانی وجود داشت به نام MDX که مخفف Multi Dimentional Expression است و در روش Tablular (یعنی همان PowerPivot خودمان) زبان برنامه نویسی جدیدی به نام DAX که مخفف Data Analysis Expression است وجود دارد .یکی از اهداف اصلی PowerPivot آن بوده است که محاسبات را (نسبت به DAX) ساده تر کند.

خود من در ابتدا تصور می کردم که اینها دو روش فرمول نویسی هستند و در نهایت متوجه شدم که اینها زبان برنامه نویسی هستند مانند زبان برنامه نویسی SQL. مشکل از اینجا دقیقا شروع می شود. این زبانهای برنامه نویسی شبیه هیچ زبان برنامه نویسی رایجی نیستند و همین کار یادگیری آنها را سخت می کند. اگر کمی در خصوص این زبانها تحقیق کنید،  خواهید دانست که یادگیری آنها بسیار سخت است.

به نظر می آید که هدف ساخت این زبانهای برنامه نویسی با اینهمه پیچیدگی آن بوده است که سرعت بالایی برای محاسبات روی داده ها به ما بدهد و به همین دلیل (احتمالا) مجبور به تولید زبانی پیچیده شده اند که در نهایت عبارات و تفسیر دستورات آن از دید کاربر سخت و غیر قابل فهم است و نیاز به مطالعه عمیق و جدی دارد.

حتی برخی از نویسندگان کتابهای انگلیسی و وب سایت های معتبر PowerPivot , DAX گفته اند که کاربرد یک تابع و یا تفسیر یک فرمول را بعد از مدت ها یاد گرفته اند.

 

بنابراین باید سطح توقعات، انتظارات خود را به عنوان یک کاربر اکسل در مورد PowerPivot متعادل کنیم DAXو بدانیم که سناریوهای پیچیده و سختی بسیاری وجود دارند که به سادگی قابل پیاده سازی در PowerPivot به زبان DAX نیست.

 

موارد کاربرد PowerPivot برای کاربران اکسل :

الف) کار با داده های بزرگ

ب) راهکاری برای محاسبات سنگین

 

می دانیم که اکسل حدود 1 میلیون سطر بیشتر ندارد و اگر لازم باشد روی یک فایل CSV بزرگ (مثلا با 1.5 میلیون سطر) در اکسل کار کنیم، هیچ راهکاری نداریم. در PowerPivot ما هیچ محدودیتی برای تعداد سطر (رکورد) نداریم به سادگی می توانیم 10 میلیون رکورد را در آن Load کنیم و از این حجم داده ها Pivot بسازیم. در ضمن آنکه می دانیم که نوشتن یک فرمول ساده مانند محاسبه ارزش افزوده و یا سود در یک فایل با تعداد سطرهای زیاد گاهی باعث هنگ کردن اکسل می شود. زیرا اکسل نمی تواند بر روی تعداد سطرهای زیاد (شاید حدود 200 هزار سطر) به سادگی محاسباتی را انجام دهد .

در PowerPivot به راحتی می توانیم ستون های محاسباتی خود را بسازیم و بر روی چندین میلیون سطر بدون هیچ نگرانی محاسبات را انجام دهیم.

 

ج) جایگزینی برای Vlookup ها

فکر نکنم که هیچ کاربر حرفه ای اکسل وجود داشته باشد که لزوم و اهمیت استفاده از Vlookkup را نداند. گاهی مجبوریم در یک فایل ده ها Vlookkup بنویسیم . صرفنظر از زمان بر بودن این کار ، مشکل آن است که در فایل های بزرگ کاملا کند شدن و از کار افتادن اکسل را تجربه خواهیم کرد. در PowerPivot ما می توانیم بین داد ها (Tableها) Relationship بر قرار کنیم و این به معنای آن است که دیگر در اکسل "نیازی به Vlookup زدن" نیست!

 

د) استفاده از توابع ساده DAX

اشاره شد که زبان DAX پیچیده و برای یادگیری سخت محسوب می شود. البته این به معنای آن نیست که هیچ یک از توابع و امکانات این زبان برای ما کاربردی ندارد. یکی از کاربردی ترین فرمولهای آن DistinctCount است که برای شمارش مقادیر متمایز (شمارش داده های بدون در نظر گرفتن تکرار آنها) بکار می رود.

 

 

رویکرد انتقادی من به PowerPivot

به نظر من ضروری می رسد که با شما کاربران حرفه ای اکسل (نه متخصصین حوزه BI ) در خصوص PowerPivot و زبان DAX نکات و تجربیاتی را به اشتراک بگذارم زیرا ممکن است بسیاری از شما بر این تصور و باور باشد که این تکنوژی چون در اکسل است و  چون جدید است بنابراین می تواند برای شما و سازمان شما کاربردی باشد.

همچنین ضرورت دیگر آن است که احتمال دارد شما با دیدن چند ویدئو و  یا خواندن کتابی فارسی (که  معمولا بسیار سطحی نوشته می شوند) و یا شرکت در یک دوره ( تا آنجایی که من مطلع هستم بسیار سطحی برگزار می شوند)  گمان کنید که PowerPivot را یاد گرفته اید.

  نکته بسیار مهم آن است که PowerPivot یعنی نوشتن فرمولها و Query ها با DAX

نکته دیگر آن است که این ابزار در تیم SQL مایکروسافت تهیه شده است و جزئی از تکنولوژی SSAS است . آیا ما می توانیم به صرف آنکه یک کپی از این تکنولوژی در اکسل قرار داده شده است، نتیجه بگیریم که این ابزار برای کاربران اکسل کاربردی است؟

به نظر واضح است که تکنولوژی PowerPivot در ادامه تکامل ابزار SQL و SSAS مایکروسافت بوجود آمده است و قرار است که متخصصین حوزه BI از آن استفاده کنند و اگر در اکسل قرار داده شده است شاید بتوانیم این نتیجه را بگیریم که بازهم این امکان برای سهولت کارهای متخصصین BI انجام شده نه الزاما کاربران اکسل.

دیدگاه من این است که اگر یک کارشناس مالی، حسابداری و یا مهندس صنایع می خواهد در حوزه اکسل بیشتر بداند و از ابزارهای اکسل بهینه تر استفاده کند، یادگیری VBA می تواند مفید تر و ساده تر باشد تا یادگیری PowerPivot و البته در ادامه می‌تواند زبان‌های SQL و یا Python را مطالعه کند.

علاوه بر این اگر که این کارشناسان مایل به تحلیل های پیچیده تری با دادهای بزرگ هستند چرا باید از PowerPivot استفاده کنند در صورتی که می توانند با سهولت بسیار بیشتری به سراغ SQL Server بروند. هم منابع آموزشی آن بسیار تکمیل و غنی است و هم یادگیری آن بسیار ساده تر و هم متخصصین آن دردسترس تر.

شاید کسی به سختی بتواند برای این یک کارشناس مالی باهوش برتریهای PowerPivot را نسبت به SQL اثبات کند.

مجدد باید تاکید کنم که نباید ما از یاد ببریم که DAX و PowerPivot تکنولوژی است که برای محاسبات سریع و سنگین به کار می رود و شاید برای فردی که داده های یک شرکت مانند آمازون را تحلیل می کند ، 1% بهینه سازی در سرعت بسیار حیاتی باشد و در این حوزه‌هاست که ما می توانیم سخن از قدرت PowerPivot (دقیق تر بگویم تکنولوژی Tabular در SSAS) را در میان آوریم.

 

کاملا بدیهی است که شما با پیش زمینه دانش SQL و سپس مطالعه کتاب های مرجع انگلیسی در حوزه PowerPivot و DAX خواهید توانست قضاوت درستی نسب به PowerPivot و DAX و لزوم استفاده از آن را انجام دهید.

 

برخی از منابع این مقاله:

https://www.microsoftpressstore.com/articles/article.aspx?p=2228445

https://en.wikipedia.org/wiki/Power_Pivot

شما هم تجربه یا دیدگاه خود را بنویسید:

محتوای این فیلد خصوصی است و به صورت عمومی نشان داده نخواهد شد.

متن ساده

  • تگ‌های HTML مجاز نیستند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
کد امنیتی
Niloofar (تایید نشده) در تاریخ چهارشنبه, 1399/08/28 - 18:43 نوشته:

سلام استاد عزیز
من همین الان آموزش پاور کویری رو تموم کردم، گفتم برم بقیه سایت استاد و بگردم هر چی مطلب گذاشته ببینم، بخاطراینکه شما فوق العاده ترین معلمی هستید که شناختم، بسیار سخاوتمند و حرفه ای. ازخدا میخوام یه جوری که ماها نمیتونیم جواب این همه لطف تونو ، تو زندگی تون بهتون بده. همیشه سلامت باشید.

محمد شاه کرمی (تایید نشده) در تاریخ چهارشنبه, 1399/03/07 - 00:54 نوشته:

با عرض سلام و خسته نباشید به استاد عزیز آقای میدانی
بینهایت ممنون از تدریس عالیتون مخصوصا در مبحث پاور کوئری
ازتو میخاستم خواهش کنم ویدیوهایی در رابطه با پاور پیوت هم لطفا بزارید

با سپاس بسیار

فرشید میدانی در تاریخ سه شنبه, 1399/04/10 - 11:02 نوشته:

واقعیت آن است که من زمان زیادی برای مطالعه پاورپیوت اختصاص دادم و در نهایت به این نتیجه رسیدم که واقعا ارزش یادگیری را ندارد زیرا زبان فرمول نویسی آن (به نام DAX) بسیار مزخرف است .
در ضمن آنکه در زبان پایتون ما کتابخانه هایی مانند پاندا را داریم که به صورت اختصاصی برای دیتا آنالیز است. به همین دلیل به شما پشنهاد می کنم که وقت و انرژی خود را بر روی پاورپیوت و زبان DAX به هدر ندهید و به جای آن یا SQL را یادبگیرید و یا زبان پایتون با هدف یادگیری کتابخانه pandas آن.

مطمئن باشید که زمان و انرژی که صرف یادگیری SQL و یا Pandas می کنید، شما را بسیار توانمند خواهد کرد.

برای یادگیری و شروع sql و مقدمات زبان پایتون از سایت w3schools.com استفاده کنید.

jamal.ixi@gmail.com در تاریخ دوشنبه, 1397/07/02 - 16:43 نوشته:

سپاسگزارم. نظرات شما بسيار روشنگر بود.

فرشاد منصوریان (تایید نشده) در تاریخ جمعه, 1396/04/30 - 21:19 نوشته:

سلام و سپاس آقای میدانی