如何根據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
4.我想這是不可能找出用戶在過濾器中選擇是什麼呢,但我怎麼知道。
5.我看着這個(https://community.qlik.com/thread/16998),但我認爲這僅僅是QlikView的,不Qlik感。
的事情,我已經試過/研究
由於我是新來Qlik,我甚至不知道這一個開始。
這是我一直在努力,都無濟於事:
- 在查找功能上看(http://help.qlik.com/en-US/sense/3.0/Subsystems/Hub/Content/Scripting/InterRecordFunctions/LookUp.htm)
- 看着動態生成主日曆(https://community.qlik.com/docs/DOC- 16939)和(https://community.qlik.com/thread/66717)並鏈接兩個日期(https://community.qlik.com/docs/DOC-5834),但這很困難,因爲我不知道過濾所選的用戶。
- 看着一套分析(https://community.qlik.com/thread/14707),但不明白它是如何能適用於這種情況
更新:我已經做了更多的工作。鑑於我的表,當用戶在[交易日期]上過濾時,如何查找數據透視表表達式中使用的值?請參閱在http://clairenstreb.brinkster.net/temp/InventoryValues.png