将 SQL 写入 U-SQL 查询
Writing SQL to U-SQL Query
谁能指导我用 Azure Data Lake
中使用的 U-SQL 语言编写下面的 SQL
select tt.userId, count(tt.userId) from (SELECT userId,count(userId) as cou
FROM [dbo].[users]
where createdTime> DATEADD(wk,-1,GETDATE())
group by userId,DATEPART(minute,createdTime)/5) tt group by tt.userId
我在 U-SQL 中找不到 DATEPART 函数。 Azure 数据分析作业出现错误。
U-SQL 不提供 T-SQL 内部函数,除了少数(如 LIKE)。有关列表,请参阅 https://msdn.microsoft.com/en-us/library/azure/mt621343.aspx。
那么如何进行DateTime操作呢?您只需使用 C# 函数和方法!
所以 DATEADD(wk, -1, GETDATE())
类似于 DateTime.Now.AddDays(-7)
和
DATEPART(minute,createdTime)/5
(您的行中有一个额外的 )
)类似于 createdTime.Minute/5
(如果您想要非整数值,可能需要将其转换为双精度)。
对于正在寻找 Michael 提到的实现的任何人。如下图
@records =
EXTRACT userId string,
createdTime DateTime
FROM "/datalake/input/data.tsv"
USING Extractors.Tsv();
@result =
SELECT
userId,
COUNT(createdTime) AS userCount
FROM @records
WHERE createdTime > DateTime.Now.AddDays(-30)
GROUP BY userId,createdTime.Minute/5;
@result2= SELECT userId,COUNT(userId) AS TotalCount
FROM @result
GROUP BY userId;
OUTPUT @result2
TO "/datalake/output/data.csv"
USING Outputters.Csv();
谁能指导我用 Azure Data Lake
中使用的 U-SQL 语言编写下面的 SQLselect tt.userId, count(tt.userId) from (SELECT userId,count(userId) as cou
FROM [dbo].[users]
where createdTime> DATEADD(wk,-1,GETDATE())
group by userId,DATEPART(minute,createdTime)/5) tt group by tt.userId
我在 U-SQL 中找不到 DATEPART 函数。 Azure 数据分析作业出现错误。
U-SQL 不提供 T-SQL 内部函数,除了少数(如 LIKE)。有关列表,请参阅 https://msdn.microsoft.com/en-us/library/azure/mt621343.aspx。
那么如何进行DateTime操作呢?您只需使用 C# 函数和方法!
所以 DATEADD(wk, -1, GETDATE())
类似于 DateTime.Now.AddDays(-7)
和
DATEPART(minute,createdTime)/5
(您的行中有一个额外的 )
)类似于 createdTime.Minute/5
(如果您想要非整数值,可能需要将其转换为双精度)。
对于正在寻找 Michael 提到的实现的任何人。如下图
@records =
EXTRACT userId string,
createdTime DateTime
FROM "/datalake/input/data.tsv"
USING Extractors.Tsv();
@result =
SELECT
userId,
COUNT(createdTime) AS userCount
FROM @records
WHERE createdTime > DateTime.Now.AddDays(-30)
GROUP BY userId,createdTime.Minute/5;
@result2= SELECT userId,COUNT(userId) AS TotalCount
FROM @result
GROUP BY userId;
OUTPUT @result2
TO "/datalake/output/data.csv"
USING Outputters.Csv();