有没有办法像在 SQL 服务器中那样在 BigQuery 中模拟数据?

Is there a way to simulate data in BigQuery as in SQL Server?

在SQLServer 2016中有一个名为wide-world-importers的数据库,我们可以通过调用SQLServer内置的存储过程模拟数据生成数百万条数据。

有没有办法在 google-大查询中做同样的事情?或者有没有办法根据我的要求在 google-big query 中模拟数据?或者甚至有一个地方可以获取包含数百万条记录的示例数据集,例如 HR、Finance、Sales 等以进行大查询; public big-query 中的数据集不满足我的要求?

BigQuery Standard SQL

as is 下方 运行
CREATE TEMPORARY FUNCTION gender(num STRING)
RETURNS STRING
LANGUAGE js AS """
  var n = parseInt(num);
  if (Math.floor(Math.sin(n*n)) == 0) return "f"
  return "m";
  """;

CREATE TEMPORARY FUNCTION department(num STRING)
RETURNS STRING
LANGUAGE js AS """
  var n = parseInt(num);
  return Math.floor(Math.sin(n) * 3 + 3)
  """;  

WITH sequence AS (
  SELECT FORMAT("%07d", ROW_NUMBER() OVER()) AS num
  FROM UNNEST((SELECT SPLIT(FORMAT("%1000000s", ""),"") AS h FROM (SELECT NULL))) AS pos
)
SELECT 
  num AS id, 
  CONCAT("FN ", num) AS first_name, 
  CONCAT("LN ", num) AS last_name,
  gender(num) AS gender,
  CONCAT("Department ", department(num)) AS department
FROM sequence
ORDER BY num

请耐心等待 运行 - 您可以将 %1000000s 中的 1000000 更改为较低的数字(它在结果中设置行数)以使其在玩它时更快

这只是如何免费生成您自己的数据的超级简单示例
您可以将此示例扩展到您有的任何特定要求
这里有无尽的机会——比如控制不同属性的分布、嵌套数据——记录/重复等。

如果对语法或函数有任何疑问,您可以查看Standard SQL Reference
另外注意:我这里用的是最近介绍的Scalar User-Defined Functions

享受并希望这对您有所帮助!