结果超出了要列出的SQL
我有一个csv格式的SQL数据集,这是表/数据结构结果超出了要列出的SQL,sql,r,teradata,Sql,R,Teradata,我有一个csv格式的SQL数据集,这是表/数据结构 Order ID Items O1 Beer O1 Wine O2 Beer O2 Wine O3 Beer O4 Chips 我需要将R中的这个转换为以下格式 O1 Beer,Wine O3 Beer,Chips 感谢您的帮助 我尝试了以下方法: # MOCK DAtA o1 <- c("be
Order ID Items
O1 Beer
O1 Wine
O2 Beer
O2 Wine
O3 Beer
O4 Chips
我需要将R中的这个转换为以下格式
O1 Beer,Wine
O3 Beer,Chips
感谢您的帮助
我尝试了以下方法:
# MOCK DAtA
o1 <- c("beer","Wine")
o2 <- c("beer","Wine")
o3 <- c("beer","Chips")
o4 <-c("Curd","chips")
o5 <-c("beer")
o6<-c("Wine")
o7 <-c("fruits")
o8<- c("wine","Cheese")
order <- list(o1,o2,o3,o4,o5,o6,o7,o8)
library(Arules)
dt <- as (order,"transactions")
注意:我无法在SQL中更改此值,因为我有800K行。您可以做一件事。您发布的第一个表内容包含订单ID和项目。您可以将它们插入到工作表中,在工作表中添加第三列,该列将存储记录的densite_RANK(),在group by partition by子句和order by Items中保留order id。加载此表后。你可以简单地利用这句话<代码>合并(最大值((1后项目结束时的大小写列数)),“)| |”,“| |合并(最大值((2后项目结束时的大小写列数)),”)|等等。但这有一个缺点,您必须知道任何订单中出现的最大项目数 如果数据库中的XML函数运行良好,可以使用下面的子句(这将克服前面方法的缺点,但需要确保此命令运行良好)
XMLAGG((items)| |','ORDER BY rank_col)(VARCHAR(50))自定义连接的_项
。希望这有帮助
谢谢
阿里特拉请表现出一些努力。到目前为止,您尝试了什么?
我无法在SQL中改变这一点,因为我有800K行
——您为什么认为R比SQL更适合解决这个问题?我对R不熟悉,仍在探索它,我能够将列表转换为事务,我的思维过程是检查是否可以将事务级数据转换为列表。当然,您应该在SQL中执行此操作,可能效率会更高。您的Teradata版本是什么?Teradata 13.10.07.12版
str(order)
List of 8
$ : chr [1:2] "beer" "Wine"
$ : chr [1:2] "beer" "Wine"
$ : chr [1:2] "beer" "Chips"
$ : chr [1:2] "Curd" "chips"
$ : chr "beer"
$ : chr "Wine"
$ : chr "fruits"
$ : chr [1:2] "wine" "Cheese"
str(dt)
Formal class 'transactions' [package "arules"] with 4 slots
..@ transactionInfo:'data.frame': 0 obs. of 0 variables
..@ data :Formal class 'ngCMatrix' [package "Matrix"] with 5