【问题标题】:U-SQL random sample of rowsU-SQL 随机行样本
【发布时间】:2021-06-16 05:04:38
【问题描述】:

希望大家能帮帮我。

我要做什么

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

我的尝试

我已经阅读了几篇文章,包括 stack overflow SQLstack overflow SQL 2SQL selectUSQL 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;

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    https://docs.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 );
    

    【讨论】:

    • 非常感谢!我对大数据非常陌生,所以我不知道 USQL 正在贬值。很高兴我问了!
    猜你喜欢
    • 2015-07-25
    • 1970-01-01
    • 2021-12-05
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多