Tableau api “如何修复”;[Teradata][ODBC Teradata Driver][Teradata Database]语法错误:子查询中不允许使用ORDER BY。”;表内查询
我正在创建一个查询,以便从将在tableau中使用的teradata中提取数据,我需要修复查询的哪一部分 我在Teradata sql asisstant中尝试过这个查询,它是有效的,但当我移动到tableau时,它总是以错误ORDER BY结束,这在子查询中是不允许的 在teradata sql查询下面:Tableau api “如何修复”;[Teradata][ODBC Teradata Driver][Teradata Database]语法错误:子查询中不允许使用ORDER BY。”;表内查询,tableau-api,Tableau Api,我正在创建一个查询,以便从将在tableau中使用的teradata中提取数据,我需要修复查询的哪一部分 我在Teradata sql asisstant中尝试过这个查询,它是有效的,但当我移动到tableau时,它总是以错误ORDER BY结束,这在子查询中是不允许的 在teradata sql查询下面: Select ChannelType,Group, LevelType, EXTRACT(YEAR From CDate) as KYear,
Select
ChannelType,Group,
LevelType,
EXTRACT(YEAR From CDate) as KYear,
EXTRACT(MOnth From CDate) as KMonth,
Case
when Position('Live' IN modeType) >0 then 'L'
else 'S'
end as LS,
Sum(watch) as Watches,
Sum(amount) as amounts
zeroifnull(amounts)/zeroifnull(Watches,)as result,
CASE
WHEN result >0 then 'WIN'
ELSE 'LOSE'
END AS WL Class
From Mart_wodo.data where
CDate between date'2018-01-01' and date'2018-12-31' and
Group in('L1','L2','L3','L4','L5') and
LevelType NOT IN('0') and
Channeltype in('TV','TY,'IG')
Group By Channeltype , Group, LevelType, KYear, KMonth,LS
Order BY KYear, KMonth,Channeltype, Group,LS asc
我猜Tableau正在将您的查询包装在一个外部的
SELECT
,这就是为什么您通过不允许的错误消息获得订单,但它在SQL Assistant中的工作方式是一样的
如果是这种情况,您需要删除orderby
子句,看看是否可以通过Tableau指定最终订单。或者可能将SQL封装在视图中,并通过Tableau访问该视图:
作为一个潜在的黑客(它可能不起作用),您可以尝试对GROUP BY
列重新排序,或者使用ORDER BY
子句添加一个虚拟窗口函数,看看这是否有任何效果:
选择
渠道类型,群体,,
...
ROW_NUMBER()(按KYear、KMonth、Channeltype、Group、LS ASC排序)作为RowNum
来自Mart_wodo.data的信息,在哪里
日期'2018-01-01'和日期'2018-12-31'之间的日期,以及
分组在('L1','L2','L3','L4','L5')和
LevelType不在('0')中,并且
频道类型输入('TV','TY','IG')
按KYear、KMonth、Channeltype、Group、LS、LevelType分组
太棒了!!不客气。您是否使用了视图或
orderby
hack?如果你使用了黑客,我会小心处理,因为行为可能会随着TD版本的变化而变化,你可能无法100%依赖它。正如你之前所建议的,我正在虚拟的windows函数中使用“ORDER BY”。而yah似乎与TD发布有关。需要小心使用它,因为TDSA不再可以用作我们希望在tableau中使用它的查询的标准测试平台