U-SQL 行的随机样本
U-SQL random sample of rows
希望大家帮帮我
我想做什么
我正在尝试从大型 Azure 数据库中随机抽取样本,以便在部署到 Azure 云之前可以 运行 本地文件。这些步骤是首先创建一个伪随机数,然后只取前 X 行或前 X% 的行。
我试过的
我已经阅读了几篇文章,包括 stack overflow SQL, stack overflow SQL 2, SQL select, and 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 或其他合适的尽快平台。
https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-overview
如果您确实考虑切换到 Azure SQL 数据库或 Azure Synapse Analytics,那么它支持 TABLESAMPLE
命令以获得类似效果:
SELECT *
FROM yourTable
TABLESAMPLE( 10 PERCENT );
希望大家帮帮我
我想做什么
我正在尝试从大型 Azure 数据库中随机抽取样本,以便在部署到 Azure 云之前可以 运行 本地文件。这些步骤是首先创建一个伪随机数,然后只取前 X 行或前 X% 的行。
我试过的
我已经阅读了几篇文章,包括 stack overflow SQL, stack overflow SQL 2, SQL select, and 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 或其他合适的尽快平台。
https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-overview
如果您确实考虑切换到 Azure SQL 数据库或 Azure Synapse Analytics,那么它支持 TABLESAMPLE
命令以获得类似效果:
SELECT *
FROM yourTable
TABLESAMPLE( 10 PERCENT );