c# - U-SQL 随机行样本

标签 c# sql azure azure-storage u-sql

希望大家能够帮助我。

我正在尝试做什么

我正在尝试从大型 Azure 数据库中获取随机样本,以便在部署到 Azure 云之前可以在本地运行这些文件。步骤是首先创建一个伪随机数,然后只取前 X 行或前 X% 的行。

我尝试过的

我读过几篇文章,包括 stack overflow SQL , stack overflow SQL 2 , SQL select ,和USQL Order By Fetch ,但仍然没有弄清楚语法。

代码:

//ATTEMPT 1
SELECT * FROM @searchlog
FETCH FIRST 3 ROWS ONLY;
//ATTEMPT 2
@outsearchlog =
    SELECT *
    FROM @searchlog
    ORDER BY NEWID() DESC FETCH 10;
//ATTEMPT 3
@outsearchlog =
    SELECT *,
           NEWID() AS newid
    FROM @searchlog;
//ATTEMPT 4
@outsearchlog =
    SELECT *,
           newid() AS newid
    FROM @searchlog;
//ATTEMPT 5
@outsearchlog =
    SELECT *,
           newid() AS newidwoot           
    FROM @searchlog;
//ATTEMPT 6
@outsearchlog =
    SELECT *,
           Random() AS newidwoot           
    FROM @searchlog;

最佳答案

U-SQL 有一个 SAMPLE 运算符,因此只需将其添加到语句的底部即可。例如,此代码生成 10% 的均匀样本:

@outsearchlog =
    SELECT *          
    FROM @searchlog
    SAMPLE UNIFORM (0.1);

示例已记录 here 。如果使用此方法,则不需要额外的行号。如果您确实需要行号,请使用ROW_NUMBER()

我对 2021 年 U-SQL 的使用表示质疑,特别是对于新项目。 ADLS Gen 1 已弃用(将于 2024 年 2 月停用),并且如您所知,U-SQL 与 ADLS Gen 2 不兼容。因此,您应该尽快将项目转换为使用 Azure Databricks 或 Azure Synapse Analytics 或其他合适的平台有可能。

U-SQL retired

https://learn.microsoft.com/en-us/azure/data-lake-store/data-lake-store-overview

如果您确实考虑切换到 Azure SQL DB 或 Azure Synapse Analytics,那么它支持 TABLESAMPLE 命令以获得类似的效果:

SELECT *
FROM yourTable
TABLESAMPLE( 10 PERCENT );

关于c# - U-SQL 随机行样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66697151/

相关文章:

azure - 将伪 TTY 与 Azure 容器实例结合使用?

c# - 在 C#.Net 中的 Azure 函数中查询 Azure Application Insights CustomEvents

c# - 如何进行C#异步编程?

sql - 替换 SQL Server 数据库中逗号分隔字符串中的值

c# - 插入具有一对多关系的新记录/更新现有记录

sql - 如何运行 Github 存储库?

MySQL同时对两个表进行计数

azure - 如何访问在 Azure 上创建的公共(public) IP 地址的 DNS 名称上的子域?

c# - 如何从嵌套类或结构中以 json 格式编写

c# - 将 LINQ 返回值转换为二维数组