我需要在2年的时间内生成1000多个随机日期,这里找到的代码很好地完成了这项工作。但是,由于我正在可视化此数据,我希望所选时间段内的每个日期至少在数据集中出现一次,否则折线图会一直跳得太多。我该怎么做呢?这里使用的初始代码:
WITH parameters AS (
SELECT 100 ids_count, DATE '2010-01-01' start_date, DATE '2020-12-31' finish_date
)
SELECT id, DATE_FROM_UNIX_DATE(CAST(start + (finish - start) * RAND() AS INT64)) random_date
FROM parameters,
UNNEST(GENERATE_ARRAY(1, ids_count)) id,
UNNEST([STRUCT(UNIX_DATE(start_date) AS start, UNIX_DATE(finish_date) AS finish)])
-- ORDER BY id
我不太明白你的意思。
"在2年内生成1000多个随机日期"one_answers"不跳过任何日期"。
如果我没弄错的话,这就相当于生成每个日期一次,也就是k=2*365或k=365+366个日期,也就是问题中的2年,然后用给定的代码随机生成另外N-k个日期。
基本上,你只需要一个SQL代码来生成指定两年内的所有天,然后使用上面的代码随机生成其余的天。
这很简单,选择两年中的每一年,然后选择每一年的所有月份和所有日期。