2017-04-09 46 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 

**