【发布时间】:2023-03-08 15:47:01
【问题描述】:
我正在使用ODBC 和dbplyr 加入两个相对简单的表。但是,我的加入密钥出现错误,它抛出了ambiguous column name error。 dplyr 连接通常不会发生这种情况,我不知道如何使用 a.key = b.key,使用 dbplyr。
Error: nanodbc/nanodbc.cpp:1655: 42000: [Microsoft][ODBC SQL Server Driver][SQL Server]Ambiguous column name 'Calendar_key'. [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.
<SQL> 'SELECT "Calendar_key", "Organization_key", "Product_Key", "Promotion_Key", "Shift_Key", "ETL_source_system_key", "Pack_Size", "Qty_Sold", "Inv_Unit_Qty", "Extended_Cost", "Extended_Purchase_Rebate", "Extended_Sales_Rebate", "Extended_Sales", "Ent_Source_Hdr_Key", "Ent_Source_Dtl_Key", "Day_Date", "Day_Of_Week_ID", "Day_Of_Week", "Holiday", "Type_Of_Day", "Calendar_Month_No", "Calendar_Month_Name", "Calendar_Qtr_No", "Calendar_Qtr_Desc", "Calendar_Year", "Fiscal_Week", "Fiscal_Period_No", "Fiscal_Period_Desc", "Fiscal_Year"
FROM "Item_Sales_Fact" AS "LHS"
LEFT JOIN "calendar" AS "RHS"
ON ("LHS"."Calendar_key" = "RHS"."calendar_key")
这是下面的代码块:我的连接被称为 con
con <- dbConnect(odbc(),
Driver = "SQL Server",
Server = "192.168.139.1",
Database = "pdi_warehouse_2304_01",
UID = XXXX,
PWD = XXXX,
Port = 1433)
item.sales <- tbl(con, "Item_Sales_Fact")
calendar <- tbl(con, "calendar")
organization <- tbl(con, "Organization")
test.df <- item.sales %>%
left_join(calendar, by = c("Calendar_key" = "calendar_key")) %>%
collect()
【问题讨论】:
-
列名是否正确
-
是的,除了这两个之外没有共享的列名,而且他们有奇怪的大写/小写的东西。
-
不知道是不是因为
key列名中的子字符串 -
你不会这么认为,但问题是如何纠正它?我无法更改表中的列名。