有没有像在SQL Server中那样在BigQuery中模拟数据的方法?

时间:2016-08-10 04:25:30

标签: sql google-bigquery sql-server-2016

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

有没有办法在谷歌大查询中做同样的事情?或者有没有办法在google-big查询中模拟数据作为我的要求?甚至还有一个地方可以获取具有数百万条记录的样本数据集,如人力资源,财务,销售等,以便进行大查询;大查询中的公共数据集不满足我的要求?

1 个答案:

答案 0 :(得分:3)

只需在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

享受并希望这有帮助!