我希望匿名化某些营销数据以用于可视化目的。为此,我创建了多个数组,这些数组用匿名值替换了现有的广告系列名称,例如Campaign 1,Campaign 2,Campaign 3等。
我使用以下查询在PostgreSQL数据库中工作:
(ARRAY['Campaign 1'::text, 'Campaign 2'::text, 'Campaign 3'::text, 'Campaign 4'::text, 'Campaign 5'::text])[(floor(random() * 5::double precision) + 1::double precision)] AS campaign_name
这是我需要做的,因为它为广告系列的每一行数据随机分配了1-5。
我试图在BigQuery中模仿这一点,但是遇到了麻烦。我将随机切换为兰特,但这没有用。有人做过这样的事吗?
答案 0 :(得分:2)
以下内容适用于BigQuery Standrad SQL(很多选项之一)。只是生成的伪数据的一个示例
#standardSQL
WITH `project.dataset.dummy_data` AS (SELECT id FROM UNNEST(GENERATE_ARRAY(1, 100)) id)
SELECT id, campaigns[OFFSET(CAST(5 * RAND() - 0.5 AS INT64))] campaign_name
FROM `project.dataset.dummy_data`, (SELECT ['Campaign 1','Campaign 2','Campaign 3','Campaign 4','Campaign 5'] campaigns)
以上假设您出于某种原因希望设置该数组
下面的版本表明您可以完全避免
#standardSQL
WITH `project.dataset.dummy_data` AS (SELECT id FROM UNNEST(GENERATE_ARRAY(1, 100)) id)
SELECT id, CONCAT('Campaign ', CAST(1 + CAST(5 * RAND() - 0.5 AS INT64) AS STRING)) campaign_name
FROM `project.dataset.dummy_data`