9

このフォーラムはより多くのプログラミングの問題に向けられているようですが、誰かが以下のリンクの論理の問題を見てくれるかどうか興味があります。私の問題は、すでに定義されているカレンダーを使用して、過去12か月の合計を計算する方法です。QVコミュニティでこれの例をほとんど見つけませんでした。詳細については、以下のリンクを参照してください。SQLまたはQVスクリプトソリューションを検討したいと思います。

私たちの会計年度は11月から10月までです。エンドユーザーに年と最後の12か月のマージンを表示するグラフを選択してもらいたいと思います。過去数か月の合計を累積するのに問題がありました。私の目標は、手動で計算されたExcelイメージ「目標」の「ローリング12か月の合計-GP」列に似ていることです。(スクリーンショットについてはQVリンクを参照してください)

ローリングマージン方程式:セット分析を使用してローリング平均方程式を作成する試み

=Sum({<master_date={'>=$(=MonthStart(Max(master_date), -12))<=$(=MonthEnd(Max(master_date)))'}>}

MasterCalendar

TempCalendar:
LOAD
$(vDateMin) + RowNo() - 1 AS DateNumber,
Date($(vDateMin) + RowNo() - 1) AS TempDate
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);

MasterCalendar:これはmaster_dateを使用してアイテムを相互に接続します。この会計カレンダーは、ローリング平均と組み合わせるのは難しいです

LOAD
TempDate AS master_date,
Day(TempDate) AS CalendarDay,
      WeekDay(TempDate) AS CalendarWeekDay,
      Week(TempDate) AS CalendarWeek,
      Month(TempDate) AS CalendarMonth,
      Year(TempDate) AS CalendarYear,
      'Q' & Ceil(Month(TempDate)/3) AS CalendarQuarter,
      WeekDay(TempDate) & '-' & Year(TempDate) AS CalendarWeekAndYear,
      Month(TempDate) & '-' & Year(TempDate) AS CalendarMonthAndYear,
      If(Num(TempDate) >= $(vYearStart) AND Num(TempDate) < $(vMonthNow), -1, 0) AS YTD, 
      If(Num(TempDate) >= $(vYearStartLY) AND Num(TempDate) < $(vMonthNowLY), -1, 0) AS LY_YTD,
      Year2Date(TempDate) * -1 AS YTD_Flag,
      Year2Date(TempDate,-1, 1, $(vToday))*-1 AS LY_YTD_Flag
RESIDENT TempCalendar ORDER BY TempDate ASC;

DROP TABLE TempCalendar;

FiscalCalander>これは私たちの会計年度を定義します

FiscalCalendar:
LOAD date(date#(20011101,'YYYYMMDD')+recno(),'MM/DD/YY') AS "master_date"
AUTOGENERATE today()-date#(20011101,'YYYYMMDD');
LEFT JOIN (FiscalCalendar)
LOAD
"master_date",
date(monthstart(master_date),'MMM YY') AS "MonthFisical",
date(monthstart(master_date),'MMM') AS "MonthFisical_MonthTitle",
date(yearstart(master_date,1,11),'YYYY') AS "YearFiscal",
month(master_date)-month(num(today(1))) AS FiscalMonthsElapsed,
YearToDate(master_date, 0,11)*-1 AS YTD_FLAG_Fiscal,
YearToDate(master_date,-1,11)*-1 AS LY_YTD_FLAG_Fiscal
RESIDENT FiscalCalendar;

スクリーンショットを表示するには:http: //community.qlikview.com/message/219912#219912

この問題をご覧いただきありがとうございます。

4

1 に答える 1

0

解決策はカレンダーにありません。カレンダーとファクト テーブルの間にピボット テーブルを作成する必要があります。

このピボット テーブルには、DIRECT と CROSSING の 2 つのタイプがあります。

タイプ DIRECT の場合、ファクト テーブルの行はカレンダーの日付にリンクされます タイプ CROSSING の場合、ファクト テーブルの行はカレンダーの将来の 12 か月のすべての日付にリンクされます。

したがって、Qlikview では、過去 12 か月の合計を月ごとに表示する場合を除き、常にタイプ DIRECT を使用します。この場合、CROSSING を使用します。これは、すべての行が将来の 12 か月の日付にリンクされているためです。これは、(逆の観点から) ある月が過去 12 か月のすべてのデータにリンクされていることを意味します。

例:

xlsx

QVW

于 2014-12-12T09:59:53.093 に答える