将 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();