دستور مپ برای استفاده بهينه از اطلاعات درکلیکویو
فرض کنید یک جدول دادهی دارید به نام جدول بازاریابان که شامل کد بازاریاب و نام آن است و از طرفی جدولی دارید بهنام جدول فروش که در آن کد بازاریاب و مقدار فروش ثبت شده است و حالا میخواهید این اطلاعات را در یک نمودار که در آن نام بازاریاب و مقدار قرار دارد نمایش دهید. برای این منظور لازم است هر دو جدول را از طریق دستورات لود(LOAD) و یا سلکت(SELECT) درون فایل کلیکویو فراخوانی کنید و با استفاده از کد بازاریاب میان این دو جدول ارتباط برقرار نمایید.
این رابطه باعث ایجاد یک خط ارتباطی میان دو جدول میگردد(این رابطه با ایجاد کلیدی یکتا روی فیلد کدبازاریاب ایجاد میگردد). برای هر کد بازاریاب در جدول فروش، با ارجاع به جدول بازاریاب نام آن یافت شده و نمایش دادهمیشود. این کار مقداری زمانبر بوده و شاید در حجم دادههای بسیار تاخیری هرچند ناچیز در سیستم ایجاد کند. در دادههای کم و اندک این کندی در سیستم محسوس نخواهدبود اما در دادههای حجیم(مثلا میلیونها رکورد اطلاعات) این رابطه باعث کندی و عملکرد ضعیف خواهد شد.
نخست یک جدول اکسل با دادههای زیاد ایجاد میکنیم(به بخش فایلهای ضمیمه رجوع شود) و روش ذکرشده در بالا را برای آن اجرا میکنیم.
یک فایل کلیکویو جدید بسازید و کدر زیر را درون اسکریپت آن قرارداده ذخیره و اجرا کنید و دوباره ذخیره کنید.
LOAD PersonCode,
PersonName
FROM
[Person.xlsx]
(ooxml, embedded labels, table is Person);
LOAD PersonCode,
Sale
FROM
[Person.xlsx]
(ooxml, embedded labels, table is Sale);در اینجا ارتباط دو جدول به صورت زیر خواهد بود:
همانگونه که مشاهده میشود هر دو جدول توسط PersonCode بهم مرتبط شدهاند. در این حالت پس از لودشدن دادهها لینک میان دو جدول ایجاد میگردد و وقتی یک نمودار تهیه میشود در هر لحظه با دیدن کد بازاریاب در جدول فروش به جدول بازاریاب رجوع میشود تا نام شخص بدست آید. اگر بتوان با ترفندی این دو جدول را یکی کرد و از آن یک جدول استفاده نمود سرعت بمراتب سریعتر خواهد بود، یعنی جدولی داشتهباشیم با فیلدهای : PersonCode، PersonName و Sale. یعنی کاری کنیم تا این ارتباط در همان زمان لودشدن به گونهای ایجاد گردد که دیگر با دیدن کدبازاریاب نیازی به رجوع به جدول بازاریاب برای بازیابی نام شخص نباشد.
در این گونه موارد یکی از روشها استفاده از دستور مپینگ(mapping) است. این دستور باعث ایجاد یک نقشه(map) در درون حافظه میشود که از منظر عملکرد با روش قبلی تفاوتی ندارد اما سرعت و کارایی آن به مراتب بیشتر است و بجای دو جدول مرتبط یک جدول برای تهیه گزارش آماده میکند.
یک فایل جدید کلیکویو ایجاد کنید و کد زیر را درون اسکریپت آن قراردهید:
map1:
Mapping LOAD PersonCode,
PersonName
FROM
[Person.xlsx]
(ooxml, embedded labels, table is Person);
LOAD PersonCode,
ApplyMap(map1,PersonCode,Unknown Person) as PersonNm,
Sale
FROM
[Person.xlsx]
(ooxml, embedded labels, table is Sale);حال ذخیره کرده بارگذاری نمایید و سپس ذخیره مجدد کنید، حال برروی آیکون TableViewer کلیک کنید، سورپرایز فقط یک جدول مشاهده میشود که همه اطلاعات(هر سه فیلد) داخل آن است.
یک نکته جالب در این روش آن است که اگر در جدول فروش، کد بازاریابی باشد که اطلاعاتی از آن در جدول بازاریاب نیست نام آن را Unknown Person میگذارد(در ضمن توجه شود برای اینکه کلیکویو یک ارتباط بیمعنی میان خط 3 و 9 ایجاد نکند بجای PersonName از PersonNm استفاده شده).
فایلهای مطلب
اکسلفایل (1.2 مگا بایت)
ارتباط میان دو جدول در کلیکویو (462 کیلو بایت)
استفاده از دستور مپینگ کلیکویو (495.75 کیلو بایت)



