如何使用Alteryx解决excel文件中的重复列名?

时间:2015-10-16 01:54:22

标签: alteryx

我有一个包含价格数据的宽Excel文件,看起来像这样

Product | 2015-08-01 | 2015-09-01 | 2015-09-01 | 2015-10-01
ABC     | 13         | 12         | 15         | 14
CDE     | 69         | 70         | 71         | 67
FGH     | 25         | 25         | 26         | 27

2015-09-01的日期可以找到两次,在上下文中有效,但显然会弄乱我的工作流程。 可以理解,第一个值是最低价格,第二个值是最高价格。如果只有一列,则min和max相同。

有没有办法解决这个问题?

我的想法如下: 我也有包含类似" 38 - 42"的值的单元格,再次表示最小值和最大值。我通过基于Regex表达式拆分它来解决这个问题。可能的解决方案是连接两个具有相同标头的列,然后根据我的规则拆分值。然而,这将要求我动态检测标题是否重复。

这是Alteryx中可能出现的问题,还是有一个更容易解决这个问题的方法?

当然,要求文件供应商改变它并不是一个真正的选择,不幸的是。

由于

编辑: 刚才有了另一个想法: 我将表转置为格式

Product | Date | Price Low | Price High

因此,如果我可以检查该表中的重复项并以某种方式将这些记录合并为一个,那么这也可以解决问题。

EDIT2: 由于我似乎没有说清楚,我的最终结果应该看起来像EDIT1中的转置表。如果只有一个值,它应该进入" Price Low" (然后我可能会把它复制到" Price High"无论如何。如果有两个值,他们应该进入相应的列。@ Poornima的建议以更复杂的形式解决重复的问题在列名后面添加" _2"但不会将值放在所需的列中。

2 个答案:

答案 0 :(得分:1)

如果此格式适合您:

Product | Date | Price Low | Price High

然后:
  - 将产品转换为关键字段
  - 使用选择工具将“名称”字段截断为10个字符。这将删除Alteryx自动重命名的任何_2值   - 总结:
   按产品分组
   按名称分组
   然后将Min和Max操作应用于值。

结果是:

Product  |  Name       |  Min_Value  |  Max_Value  
ABC      |  2015-08-01 |  13         |  13
ABC      |  2015-09-01 |  12         |  15
ABC      |  2015-10-01 |  14         |  14

答案 1 :(得分:0)

对于此问题,您可以利用Alteryx 9.1中提供的本机Excel(.xlsx)驱动程序。如果Excel中的多个列使用相同的字符串,则本机驱动程序将在末尾使用下划线重命名它们,例如2015-09-01,2015-09-01_1。通过利用这一点,我们可以分三步重新格式化数据:

  1. 正如您所建议的那样,我们首先转置数据,以便我们可以利用列标题。
  2. 然后,我们可以使用公式工具编写一个公式,该公式根据标题长度评估日期的列标题是第一个还是最后一个。
  3. 最后一步是将数据恢复为与之前相同的格式,可以通过交叉工具进行。
  4. 您可以查看每个工具here的配置。最终结果是as follows

    希望这会有所帮助。

    此致

    Poornima