Hive 带有配置单元但包含匹配行的随机样本表

Hive 带有配置单元但包含匹配行的随机样本表,hive,hiveql,random-sample,Hive,Hiveql,Random Sample,我有一个包含userID列和其他用户变量列的大表,我想使用Hive根据用户id提取一个随机的用户样本。此外,有时这些用户将位于多行上,如果表的其他部分包含随机选择的用户ID,我也希望提取这些行 我看了一下,我发现可以这样做来提取1%的样本: SELECT * FROM source TABLESAMPLE (1 PERCENT) s; 但我不知道如何添加约束,我希望这些1%用户ID的所有其他实例也被选中。您可以使用rand随机分割数据,并在您的类别中使用适当的用户ID百分比。我推荐rand,

我有一个包含userID列和其他用户变量列的大表,我想使用Hive根据用户id提取一个随机的用户样本。此外,有时这些用户将位于多行上,如果表的其他部分包含随机选择的用户ID,我也希望提取这些行

我看了一下,我发现可以这样做来提取1%的样本:

SELECT * FROM source 
TABLESAMPLE (1 PERCENT) s;

但我不知道如何添加约束,我希望这些1%用户ID的所有其他实例也被选中。

您可以使用rand随机分割数据,并在您的类别中使用适当的用户ID百分比。我推荐rand,因为将种子设置为某个值可以使结果重复

select c.*
from 
(select userID
, if(rand(5555)<0.1, 'test','train') end as type
    from
    (select userID 
    from mytable 
    group by userID
    ) a
) b
right outer join
(select *
from userID
) c
on a.userid=c.userid
where type='test'
;

这是为实体级建模目的而设置的,这就是为什么我将测试和训练设置为类型。

您可以使用rand随机分割数据,并在您的类别中使用适当百分比的userid。我推荐rand,因为将种子设置为某个值可以使结果重复

select c.*
from 
(select userID
, if(rand(5555)<0.1, 'test','train') end as type
    from
    (select userID 
    from mytable 
    group by userID
    ) a
) b
right outer join
(select *
from userID
) c
on a.userid=c.userid
where type='test'
;

这是为实体级建模目的而设置的,这就是为什么我将测试和训练设置为类型。

您可以使用rand随机分割数据,并在您的类别中使用适当百分比的userid。我推荐rand,因为将种子设置为某个值可以使结果重复

select c.*
from 
(select userID
, if(rand(5555)<0.1, 'test','train') end as type
    from
    (select userID 
    from mytable 
    group by userID
    ) a
) b
right outer join
(select *
from userID
) c
on a.userid=c.userid
where type='test'
;

这是为实体级建模目的而设置的,这就是为什么我将测试和训练设置为类型。

您可以使用rand随机分割数据,并在您的类别中使用适当百分比的userid。我推荐rand,因为将种子设置为某个值可以使结果重复

select c.*
from 
(select userID
, if(rand(5555)<0.1, 'test','train') end as type
    from
    (select userID 
    from mytable 
    group by userID
    ) a
) b
right outer join
(select *
from userID
) c
on a.userid=c.userid
where type='test'
;

这是为实体级建模目的而设置的,这就是为什么我使用test和train作为类型。

查询中的test和train是什么?代码按该字段分割数据。我将使用数据的训练部分来构建模型,然后使用测试部分来评估模型性能。这是建立预测模型时的标准操作。查询中的测试和训练是什么?代码按该字段分割数据。我将使用数据的训练部分来构建模型,然后使用测试部分来评估模型性能。这是建立预测模型时的标准操作。查询中的测试和训练是什么?代码按该字段分割数据。我将使用数据的训练部分来构建模型,然后使用测试部分来评估模型性能。这是建立预测模型时的标准操作。查询中的测试和训练是什么?代码按该字段分割数据。我将使用数据的训练部分来构建模型,然后使用测试部分来评估模型性能。这是建立预测模型时的标准操作。