如何使用 Alteryx 解决 excel 文件中的重复列名?
How to resolve duplicate column names in excel file with 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 表达式拆分它来解决这个问题。可能的解决方案是连接两个具有相同 header 的列,然后根据我的规则拆分值。但是,如果 header 是重复的,那将需要我动态检测。
这在 Alteryx 中是可行的还是有更简单的解决方案来解决这个问题?
当然,不幸的是,要求文件的供应商更改它并不是一个真正的选择。
谢谢
编辑:
刚刚有了另一个想法:
我转置 table 格式
Product | Date | Price Low | Price High
因此,如果我可以检查 table 中的重复项并以某种方式将这些记录合并为一个记录,那也可以解决问题。
编辑2:
由于我似乎没有说清楚,我的最终结果应该看起来像 EDIT1 中转置的 table 。如果只有一个值,它应该放在 "Price Low" 中(然后我可能会把它复制到 "Price High" 中。如果有两个值,它们应该放在相应的列中。@Poornima 的建议解决了重复问题以比在列名称后面放置“_2”更复杂的形式发出问题,但不会将值放入所需的列中。
对于这个问题,您可以利用 Alteryx 9.1 中可用的原生 Excel (.xlsx) driver。如果 Excel 中的多个列使用相同的字符串,则它们将由本机 driver 重命名,并在末尾添加下划线,例如 2015-09-01,2015-09-01_1。利用这一点,我们可以分三步重新格式化数据:
- 正如您所建议的,我们首先转置数据,以便我们可以利用 header 列。
- 然后我们可以使用公式工具编写一个公式,根据 header 长度评估日期的列 header 是第一个还是最后一个。
- 最后一步是将数据恢复为与以前相同的格式,这可以通过交叉表工具进行。
您可以查看每个工具的配置 here. The end result would be as follows。
希望这对您有所帮助。
此致,
可怜
如果这种格式适合您:
Product | Date | Price Low | Price High
然后:
- 以产品为关键字段进行转置
- 使用 select 工具将您的姓名字段截断为 10 个字符。这将删除 Alteryx 自动重命名的任何 _2 值。
- 总结:
按产品分组
按名称分组
然后对值应用最小和最大操作。
结果是:
Product | Name | Min_Value | Max_Value
ABC | 2015-08-01 | 13 | 13
ABC | 2015-09-01 | 12 | 15
ABC | 2015-10-01 | 14 | 14
我有一个包含价格数据的宽 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 表达式拆分它来解决这个问题。可能的解决方案是连接两个具有相同 header 的列,然后根据我的规则拆分值。但是,如果 header 是重复的,那将需要我动态检测。
这在 Alteryx 中是可行的还是有更简单的解决方案来解决这个问题?
当然,不幸的是,要求文件的供应商更改它并不是一个真正的选择。
谢谢
编辑: 刚刚有了另一个想法: 我转置 table 格式
Product | Date | Price Low | Price High
因此,如果我可以检查 table 中的重复项并以某种方式将这些记录合并为一个记录,那也可以解决问题。
编辑2: 由于我似乎没有说清楚,我的最终结果应该看起来像 EDIT1 中转置的 table 。如果只有一个值,它应该放在 "Price Low" 中(然后我可能会把它复制到 "Price High" 中。如果有两个值,它们应该放在相应的列中。@Poornima 的建议解决了重复问题以比在列名称后面放置“_2”更复杂的形式发出问题,但不会将值放入所需的列中。
对于这个问题,您可以利用 Alteryx 9.1 中可用的原生 Excel (.xlsx) driver。如果 Excel 中的多个列使用相同的字符串,则它们将由本机 driver 重命名,并在末尾添加下划线,例如 2015-09-01,2015-09-01_1。利用这一点,我们可以分三步重新格式化数据:
- 正如您所建议的,我们首先转置数据,以便我们可以利用 header 列。
- 然后我们可以使用公式工具编写一个公式,根据 header 长度评估日期的列 header 是第一个还是最后一个。
- 最后一步是将数据恢复为与以前相同的格式,这可以通过交叉表工具进行。
您可以查看每个工具的配置 here. The end result would be as follows。
希望这对您有所帮助。
此致,
可怜
如果这种格式适合您:
Product | Date | Price Low | Price High
然后:
- 以产品为关键字段进行转置
- 使用 select 工具将您的姓名字段截断为 10 个字符。这将删除 Alteryx 自动重命名的任何 _2 值。
- 总结:
按产品分组
按名称分组
然后对值应用最小和最大操作。
结果是:
Product | Name | Min_Value | Max_Value
ABC | 2015-08-01 | 13 | 13
ABC | 2015-09-01 | 12 | 15
ABC | 2015-10-01 | 14 | 14