2017-04-09 57 views
0

這使我發瘋。 說我有一個產品的名稱,它們的價格和定價的起源列表的質量: 產品,$ 1,美國 產品,2€,歐盟 產品,0.5€,HKQlikview:表格或直線/數據透視將顯示最小值和最小值的相關值

什麼是正確的表格配置得到這個結果,而不復制相同產品名稱的記錄?: 產品0.5€HK

也就是說,表格計算最低價格並顯示最低價格的正確來源?

我要麼得到所有擴展樞軸dupe產品或產品來源返回假。 Excel的支點不顯示重複的行,簡單的索引和匹配函數工作得很快,但我希望兩個計算在Qlikview中成功完成。

請幫幫忙, -v

回答

0

您需要在應用程序的腳本部分執行此操作。

首先,你需要建立產品和他們的最低價格

LOWEST_PRICES: 
Load Product_ID, 
     min(Selling_Price) as Min_Price 
resident SOURCE_TABLE 
group by Product_ID; 

,然後你要使用的最低價格和PRODUCT_ID的是組合加入回源位置在桌上

名單
left join 
Load Product_ID, 
    Selling_Price as Min_Price, 
    Source_Location 
Resident SOURCE_TABLE; 

然後,你可以讓QlikView的關聯到PRODUCT_ID從原始表,它會始終返回一個SOURCE_LOCATION和一個MIN_PRICE

+0

讓我直說 - 沒有辦法在程序中純粹做到這一點? 它不能根據它返回的值查找值嗎?所以現在我們基本上給程序提供了答案,並操縱了它向他們展示的方式 - 這並不是我應該如何描繪它的工作方式。這個解決方案是否有效,至少給QV所有的值,告訴它加載最低價格作爲一個維度,並呈現與ID相關的數據?我的觀點是無需在Qlikview之外準備任何計算。對不起,我真的希望這只是受外界額外計算影響最小。 –

+0

我建議的腳本是在QlikView中。 –

+0

是的,我明白了。但是這種情況下的最低價格需要從文檔中加載,就是你說的,所以它們不是由Qlikview計算的。有沒有辦法只是告訴qlikview有關最低價格的參考價值?就像我有表格顯示同一產品ID的最小/最大價格 - 要知道哪個國家有最低價格或最高價格?這個方法讓我在qlikview之外計算它,然後加載數據,看起來我可以做得更容易。我可能是錯的,但我不完全理解你。 –

0

你應該在這樣的結構正常化您的數據:

PRODUCTS_TABLE 
-description 
-price 
-id_origin (FK) 

ORIGINS_TABLE 
-id 
-country 

ID和id_origin鏈接(FK是外鍵,id是主鍵)。 您的初始數據應該分解並適合這種結構。 然後你應該很容易地建立你的支點。

+0

您好,我不太明白 - 「國家」 本身在我的案件的ID。因此,添加假fk外鍵標識將使產品表通過鏈接到具有標識的不同表(origins_table)正確找到-country-,這正是您所說的內容嗎?但計算出的最低價格(按表達式)應該是該計劃查找該國的鏈接價值,不是嗎?這個邏輯將如何工作? –

+0

我通常更喜歡代用鍵(id爲整數)。如果你把國家作爲關鍵字,那麼id_origin被替換爲「country」。一旦你設置了域模型,你就可以開始構建它的報告。 –

+0

我不太熟悉Qlikview,所以我還沒有建立域模型的想法。然而,我的腳本文件有多個源設置來捕獲字段,如唯一ID,名稱,品牌,價格,起源,並且因爲數據透視表在查詢值時顯示空值 - 我在同一個腳本內創建了另一個文檔鏈接,它具有與名稱,品牌相匹配的唯一ID。等等。但即使QV讓我在我的ID +名字旁邊獲得最低價格,但確切的最低價格的起源將顯示空值或空白,所以我仍然試圖圍繞您的建議來包裝我的頭。對不起 - 我很慢。 –

1

對於任何想解決的 - 這裏有一個修改版本主要歸功於TheBudac)真正得到比我問的第一個地方多。實際上,這給我提供了最低價和最高價以及所涉價格的兩個起源。 將左連接ORIGIN字段修改爲唯一是實際從我的數據獲得多個答案的關鍵; ENJOY!:

**

LOWESTPRICES: 
LOAD EAN, 
    min(PRICE) as MINEUR 
resident ALL 
group by EAN; 
left join 
LOAD EAN, 
    PRICE as MINEUR, 
    ORIGIN as MINORIGIN 
Resident ALL; 
HIGHESTPRICES: 
LOAD EAN, 
    max(PRICE) as MAXEUR 
resident ALL 
group by EAN; 
left join 
LOAD EAN, 
    PRICE as MAXEUR, 
    ORIGIN as MAXORIGIN 
resident ALL; 
//BRAND AND NAMES 
LOAD EAN, 
    ESSBRAND, 
    ESSNAME 

**