TABLESAMPLE 子句

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

TABLESAMPLE 语句用于对关系进行采样。

语法

TABLESAMPLE ( { percentage PERCENT ) |
                num_rows ROWS |
                BUCKET fraction OUT OF total } )
            [ REPEATABLE ( seed ) ]

parameters

  • percentage PERCENT

    一个介于 0 和 100 之间的整数或十进制常数 percentage,指定要采样的表行的百分比。

  • num_rows ROWS

    一个常数正整数表达式 num_rows,指定要采样的所有行中的绝对行数。

  • BUCKET fraction OUT OF total

    一个整数常数 fraction,指定要采样的整数常数 total 中的部分。

  • REPEATABLE ( seed )

    适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 11.0 及更高版本

    一个可选的正整数常数 seed,用于始终生成相同的行集。 如果要多次重新发出查询,并且需要相同的采样行集,请使用此子句。

备注

  • TABLESAMPLE 返回所请求的大约行数或分数。
  • 如果随机性很重要,请始终使用 TABLESAMPLE (percent PERCENT)TABLESAMPLE (num_rows ROWS) 不是简单的随机示例,而是改用 LIMIT 来实现的。

示例

> CREATE TEMPORARY VIEW test(id, name) AS
  VALUES ( 1, 'Lisa'),
         ( 2, 'Mary'),
         ( 3, 'Evan'),
         ( 4, 'Fred'),
         ( 5, 'Alex'),
         ( 6, 'Mark'),
         ( 7, 'Lily'),
         ( 8, 'Lucy'),
         ( 9, 'Eric'),
         (10, 'Adam');
> SELECT * FROM test;
  5 Alex
  8 Lucy
  2 Mary
  4 Fred
  1 Lisa
  9 Eric
 10 Adam
  6 Mark
  7 Lily
  3 Evan

> SELECT * FROM test TABLESAMPLE (30 PERCENT) REPEATABLE (123);
  1     Lisa
  2     Mary
  3     Evan
  5     Alex
  8     Lucy

> SELECT * FROM test TABLESAMPLE (5 ROWS);
  5 Alex
  8 Lucy
  2 Mary
  4 Fred
  1 Lisa

> SELECT * FROM test TABLESAMPLE (BUCKET 4 OUT OF 10);
  8 Lucy
  2 Mary
  9 Eric
  6 Mark