في Birt - عناصر المجموعة في طاولة وفقا ل Substring

StackOverflow https://stackoverflow.com/questions/1184281

  •  19-09-2019
  •  | 
  •  

سؤال

سؤال مبتدئ الذي لم أجد إجابة عليه.

لدي تقرير يحتوي على جدول يحمل العديد من العناصر التي تحتوي على عمود "الوقت". أرغب في تجميع العناصر حسب الوقت بحيث سيتم تجميع جميع البنود من نفس الشهر معا.

للقيام بذلك، يجب أن استخراج الشهر / السنة من سلسلة "الوقت" (التنسيق "17:22 19/07/09") واستخدام ذلك للتجميع. أعرف كيف أفعل كل هذا في جاوة وأعتقد أن Birt يقدم عدة طرق للقيام بذلك، لكنني لم أستطع أن أجد طريقة سهلة للقيام بذلك.

إذا كان هناك برنامج تعليمي جيد في هذا أحب التحقق من ذلك.

شكرا!!

هل كانت مفيدة؟

المحلول

لقد فعلنا ذلك على النحو التالي. في استعلام SQL الخاص بنا للحصول على مجموعة البيانات، نختار كليهما (على سبيل المثال) "char(my_date,iso)" و "left(char(date,iso),7)" (بالنسبة 2009-01-05 و 2009-01 على التوالي)، شيء مثل:

select
    left(char(my_date,iso),7) as isoyyyymm,
    char(my_date,iso) as isodate,
    otherfield as value
from tbl
order by my_date

ثم، عند إنشاء جدولك في التقرير، يجب أن يكون العمود 1 عمود التجمع يعتمد على ISOYYYYMM وانفجار بهذا العمود في الجدول:

  • التوجه،
  • خط بيانات المجموعة؛ و
  • خط البيانات التفاصيل.

لذلك ينتهي بك الأمر، في المصمم:

+--------------------------------+-----------+-----------------+
| <Header row>                   | Date      | Value           |
+--------------------------------+-----------+-----------------+
| <Group header row (isoyyyymm)> |           |                 |
+--------------------------------+-----------+-----------------+
| <Detail row>                   | [isodate] | [value]         |
+--------------------------------+-----------+-----------------+
| <Group footer row (isoyyyymm)> |           | Total.sum(      |
|                                |           |   row["value"], |
|                                |           |   null,         |
|                                |           |  "Grp1")        |
+--------------------------------+-----------+-----------------+

سيزيل جدول التقرير المجموعة في الشهر ولكن خطوط التفاصيل المعروضة كلها تحتوي على التاريخ الكامل:

Date         Value
----------   -----

2009-01-01       7
2009-01-08       2
2009-01-15       1
2009-01-22       4
             -----
                14

2009-02-05       2
2009-02-12       0
2009-02-19       0
2009-02-26       1
             -----
                 5

أنت يمكن مجموعة على فترات الزمنية إذا كنت ترغب في القيام بذلك بهذه الطريقة ولكننا اخترنا أبسط نهج لهذه المواقف حيث يمكننا استخدام سلاسل بسيطة. من الواضح، إذا كانت الفاصل الزمني الخاص بك أسبوع (أو أي شيء آخر غير قابل للقياس لتحليل السلسلة البسيطة)، فستحتاج إلى استخدام المجموعة الفاصلة المدمجة في BIRT.

أفضل برنامج تعليمي لهذا (في رأيي)، في الصفحة 187 (في الفصل 12) من بيرت، دليل ميداني للإبلاغ. وبعد ذلك و دمج وتوسيع بيرت يجب أن - هافس لأي مستخدم بات جاد.

هذا هو الأول أمر حيوي تماما لأي مصمم تقرير. يغطي الثاني موضوعات أكثر تقدما بكثير مثل Java and JavaScript، ونموذج كائن التقرير والهندسة المعمارية الأساسية ل Birt. هذا مطلوب إذا كنت تريد أن تكون تقاريرك مذهلة حقا.

نصائح أخرى

هل يتضمن المعلمات التقرير هنا تحليل DateTime يساعدك؟

http://www.eclipse.org/birt/phoenix/deply/viewerusage.php#pharameters.

لدي تقرير عينة على تبادل Birt Devshare الذي يفعل هذا الشيء بالضبط. يمكنك تزويدها بتعبير منتظم (بسيطة أو معقدة كما تحتاج) وسيستخدم المباراة من Regex لإنشاء مجموعات.

http://www.birt-exchange.org/devshare/designing-birt-reports/746-create-dynamic-group-gruptring- expstring/#Descript.

حظ سعيد!

يمكن القيام بذلك مع إعداد المجموعة في الجدول نفسه. كيفية إنشاء مجموعات الموصوفة http://www.eclipse.org/birt/phoenix/tutorial/basic/basic06.php. (راجع للشغل، والبحث عن "مجموعة طاولة BIRT" في Google Gices هذا كضرب أول). في هذه الحالة، يمكنك القيام بذلك مثل هذا:

  • انقر بزر الماوس الأيمن فوق رأس الصف الخاص برأس مجموعة الولاية وسيتم عرض قائمة السياق.
  • من قائمة السياق، اختر إدراج مجموعة → أدناه. يظهر مربع حوار تفاصيل المجموعة.
  • اختار عمود "الوقت" في المجموعة في الحقل وكتابة الوقت في حقل الاسم.
  • حدد "شهر" في الغلزات الفاصلة
  • انقر فوق موافق.

يؤدي هذا إلى إنشاء جدول مجمعة دون أي SQL أو JS FIDDLING.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top