【问题标题】:Result out of SQL to list列出 SQL 的结果
【发布时间】:2015-07-01 00:46:15
【问题描述】:

我有一个 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("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")
  • 输出:

    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                     
    

注意:我无法在 SQL 中更改它,因为我有 800K 行。

【问题讨论】:

  • 请付出一些努力。到目前为止,您尝试了什么?
  • I cannot change this in SQL because I have 800K rows -- 是什么让您认为 R 比 SQL 更适合解决这个问题?
  • 我是 R 新手,仍在探索它,我能够将列表转换为事务,我的思考过程是检查是否可以将事务级别数据转换为列表。
  • 当然你应该在SQL中这样做,也许它会更有效率。您的 Teradata 版本是什么?
  • 版本 Teradata 13.10.07.12

标签: sql r teradata


【解决方案1】:

你可以做一件事。您发布的第一个表格内容具有订单 ID 和项目。您可以将它们插入到工作表中,在工作表中添加第三列,该列将存储记录的 DENSE_RANK(),将 order id 保留在 group by partition by 子句和 order by Items 中。加载此表后。您可以简单地使用此语句。 COALESCE(MAX((CASE rank_col WHEN 1 THEN items END)),'')  || ',' || COALESCE(MAX((CASE rank_col WHEN 2 THEN items END)),'')   || ',' || 等等。但这有一个缺点,您必须知道任何订单中将出现的最大项目数。

如果您的数据库中的 XML 函数运行良好,您可以使用以下子句(这将克服前一种方法的缺点,但您需要确保该命令运行良好)

XMLAGG((items)|| ',' ORDER BY rank_col) (VARCHAR(50)) custom_concatenated_items 。希望这会有所帮助。

谢谢 阿里特拉

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多