2017-06-15 209 views
0

如何根據Qlik Sense Visualization表達式中的日期獲取開始和結束值?

我是Qlik新手,似乎無法將我的頭圍繞在工作中的這一挑戰中。有任何想法嗎????????!???!?!?!?!?!

在可視化(在標準輪轂),我需要執行兩個表和日期(或多個)用戶從DateAs的在過濾窗格列表中選擇基於數據的計算。

下面
給定兩個表中給出。還有就是在他們更多的數據,我只是出了主鍵數據= 2

表A:
PrimaryKeyA | ValueA | DateA
2 | 300.00 | 2/1/2017
2 | 100.00 | 2017/2/28
2 | 123.45 | 3/1/2017
2 | 0.02 | 2017/3/15
2 | 0.03 | 2017/3/31
2 | 0.01 | 2017年5月1日
2 | 67.89 | 2017年6月2日

表B:
PrimaryKeyB | ValueB | DateB
2 | 9.87 | 2017/2/28
2 | 9.86 | 2017/3/31
2 | 9.85 | 4/31/2017
2 | 9.84 | 2017年5月31日


計算根據過濾DATES
結果= FirstValue +薩姆(值a) - SecondValue


計算規則,WHERE PrimaryKeyA = PrimaryKeyB
1.如果只有一個日期是在Date過濾器中選擇,SecondValue是ValueB的DateB在過濾日期之前打開或最近。
2.如果在日期過濾器中選擇了多個日期,則SecondValue是ValueB的DateB在最近過濾日期之前或之前最接近的值。

3.如果只有一個日期中的日期過濾器中選擇,該FirstValue是VALUEB其DateB是SecondValue的DateB之前最接近的一次。
4.如果在日期過濾器中選擇了多個日期,那麼FirstValue是ValueB,其DateB在最早的過濾日期之前最接近。

5.當一個沒有發現匹配,則該值(FirstValue或SecondValue)設置爲零。


實施例

1.用戶選擇的日期過濾器:2017年6月2日

SecondValue是9.84(匹配5 /規則1的2017/2017)
FirstValue是9.85(匹配4/31/2 017從規則3)

結果= 9.85 + 67.89 - 9.84 = 67.9

2.用戶選擇的日期過濾器:2017年5月1日

SecondValue是9.85(匹配規則1的4/31/2017)
FirstValue是9.86

結果(從第3條匹配2017年3月31日)= 9.86 + 0.01 - 9.85 = 0.02

3.用戶選擇的日期過濾器:2017年3月1日

SecondValue是9.87
冷杉(從第1條匹配2017年2月28日) tValue是0(沒有來自規則5的匹配)

結果= 0 + 123.45 - 9.87 = 113.58

4.用戶選擇的日期過濾器:2017年3月1日2017年3月31日通過

SecondValue是9.86
FirstValue是9.87(從第2條匹配2017年3月31日)

結果(從規則4匹配2017年2月28日)= 9.87 +(123.45 + 0.02 + 0.03) - 9.86 = 123.51

5.用戶選擇日期過濾器:3/1/2017 th粗2017年6月2日

SecondValue是9.84
FirstValue是9.87(從第2條匹配2017年5月31日)

結果(從規則4匹配2017年2月28日) = 9.87 +(123.45 + 0.02 + 0.03 + 0.01 + 67.89) - 9.84 = 191。43

6.用戶選擇的日期過濾器:2017年2月1日2017年2月28日通過

SecondValue是9.87(匹配規則2的2/28/2017)
FirstValue爲0(與規則5不匹配)

結果= 0 +(300.00 + 100.00) - 9.87 = 390.13


IDEAS
1.我不認爲Qlik感具有用戶定義的函數,從而使想法是出來。

2.我在想,會執行以下僞代碼的表達方式,但我不知道這到底是怎麼來完成。

Set MaxDateFilter = MAX(Filtered dates) 
 
    Set MinDateFilter = MIN(Filtered dates) 
 
    If MaxDateFilter = MinDateFilter 
 
    Then (One date selected) 
 
      Set SecondValue = Lookup first match in TableB where DateB =< MaxDateFilter (If no match found, set to 0) 
 
      Set FirstValue = Lookup first match in TableB where DateB < SecondValue's DateB (If no match found, set to 0) 
 
    Else (Date range selected) 
 
      Set SecondValue = Lookup first match in TableB where DateB =< MaxDateFilter (If no match found, set to 0) 
 
      Set FirstValue = Lookup first match in TableB where DateB < MinDateFilter(If no match found, set to 0) 
 
    Result is FirstValue + SUM(ValueA) - SecondValue
3.我想從包含可能的日期的子程序,基於MIN(DateA和DateB)動態地創建新表C,並在它有ValueBs不知何故,也許所有可能的排列,但我迷路了。

4.我想這是不可能找出用戶在過濾器中選擇是什麼呢,但我怎麼知道。

5.我看着這個(https://community.qlik.com/thread/16998),但我認爲這僅僅是QlikView的,不Qlik感。

的事情,我已經試過/研究

由於我是新來Qlik,我甚至不知道這一個開始。
這是我一直在努力,都無濟於事:

更新:我已經做了更多的工作。鑑於我的表,當用戶在[交易日期]上過濾時,如何查找數據透視表表達式中使用的值?請參閱在http://clairenstreb.brinkster.net/temp/InventoryValues.png

回答

相關問題