首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google Big query中使用Farm_fingerprint

在Google Big query中使用Farm_fingerprint
EN

Stack Overflow用户
提问于 2017-08-02 01:24:50
回答 1查看 4.7K关注 0票数 2

我有我要导入到Google Big Query的表。这些表是我的临时表,我正在使用视图将临时表转换为逻辑仓库表。我的问题是代理键。

现在,ROW_NUMBER()失败了,因为我的数据太大了。

有人推荐我使用FARM_FINGERPRINT

有没有在大查询中使用Surrogate_key生成的合适方法?

谢谢

更新1要求澄清。

我的一些源表有30个字段,其中包含数百万条记录。大到可以在这里展示。我们正在将这些记录转换为表,并需要创建代理键以帮助稍后的BI工具。

为此,我们的视图(用来替换目标表)具有转换,而且我们使用ROW_NUMBER()函数来创建唯一的代理键。我们意识到,该函数强制Big query将整个逻辑推到一个节点上,这会使查询崩溃。

我们正在使用FARM_FINGERPRINT(),使用表示唯一业务键的一串连接字段作为输入来检索INT64值以用作代理键。我们的信念是,这将提供一个整数,我们可以在该团队需要时在BI工具中使用。

我想问的是,当你有这么大的数据集时,有没有一种合适的方法来在Google Big Query中生成基于整数的代理键?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-02 05:40:28

您是否可以找到不同的策略来对数据进行分区?

这将失败,并显示“资源已超出”(正如预期的那样--请注意,我并不是在尝试删除它们的重复项,而是对它们的每一次提及进行编号):

代码语言:javascript
复制
SELECT author
  , ROW_NUMBER() OVER(ORDER BY created_utc)
FROM `fh-bigquery.reddit_comments.2017_06`

但我可以按第一个字母对作者进行分区,以便将数据放入分区中:

代码语言:javascript
复制
SELECT author
  , ROW_NUMBER() OVER(PARTITION BY REGEXP_EXTRACT(author, '.') ORDER BY created_utc)
FROM `fh-bigquery.reddit_comments.2017_06`

这行得通!现在每一行都可以有一个由first_letter_author+row_number组成的id

代码语言:javascript
复制
SELECT *
  , CONCAT(
      first_letter
      , '-'
      , CAST(ROW_NUMBER() 
      OVER(PARTITION BY REGEXP_EXTRACT(author, '.') 
      ORDER BY created_utc) AS STRING)) id
FROM (
  SELECT author, created_utc, REGEXP_EXTRACT(author, r'^.') first_letter
  FROM `fh-bigquery.reddit_comments.2017_06`
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45444201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档