在编写下一个SQL查询之前阅读此问题

数据库 SQL Server
当我在Airbnb时,我有很好的机会,可以在向Brian Chesky报告的新团队中工作。这是令人兴奋的 - 我们正在扮演一个新产品系列,所以我们必须每天制作更改游戏的决定。但作为团队的数据科学家,我始终负责采购数据以指导我们的产品方向,这意味着很多分析工作。

 [[385705]]

当我在Airbnb时,我有很好的机会,可以在向Brian Chesky报告的新团队中工作。这是令人兴奋的 - 我们正在扮演一个新产品系列,所以我们必须每天制作更改游戏的决定。但作为团队的数据科学家,我始终负责采购数据以指导我们的产品方向,这意味着很多分析工作。

第一周是对我的上下文开关的能力的艰难测试:我不得不找到模糊的表格并编写大量查询,但甚至通过Beautifulsoup Scrapes和Veartrics API请求正则表达式。截至第三周,我开始累了,所以我需要一个系统来保持我的速度。我来实现,在使用数据时,只有两种可以搞砸的方式:

  • 使用错误的数据。
  • 错误的使用数据。

这两个都可以通过在数据周围具有更好的上下文来解决。

所以我自己做了一个清单来减轻这两个错误,以确保我不会将产品引导到遗忘。我会在这里分享我的,但是这对你来说究竟可能取决于你公司的特定筹码。将此作为一个示例指南,了解如何让自己一些好的语境,以使您使用表格的危险,但我鼓励您采取这个并使其成为自己的。

那么我需要什么背景,我如何得到它?

嗯,您需要任何和所有信息,这些信息将减少错误或使用错误数据的数据。在我的经验中,只需三个检查可以获得合理的覆盖:

  • 检查基本表METAData.e.g。列名称,分区信息,如何生成。
  • 检查您的假设。在本专栏中是什么?这是一个空列吗?什么是截然不同的价值?自上次我跑这个查询以来有这些改变吗?
  • 与别人联系。其他人在做这张表做什么?你问谁有疑问吗?

1.检查基本表元数据

第一步是它找到一个表并弄清楚如何查询它。

 

[[385706]]

 

You must woo your table before it will reveal its secrets(Reposted with permission from Olya Tanner)

对于最基本的信息,如列名,索引信息,分区信息,查看定义,您通常可以查询系统表。手头保留这些表的列表,以便您可以轻松查询它们。例如,对于符合ANSI SQL的数据库(其中大多数),请记住以下表格通常有助于:

  • Information_schema.columnScolumn 名称,分区信息,列类型,无效。
  • Information_schema.tables和Information_schema.viewSnice列表所有表和视图。视图,您通常可以获得DDL语句。

您通常还可以获得其他人写的查询历史,这可以帮助弄清楚如何使用表格。您甚至可以通过语句类型进行过滤(例如,创建,插入,选择)以确定如何创建表:

  • Information_schema.jobs_by_project(bigquery)表(Information_schema.query_history())

2.检查您的假设。

记下您的假设并运行查询来检查它们。

 

[[385707]]

 

A nice illustration of a person making a checklist, in case you haven’t seen one before.

此时您希望查看数据是否是您认为的。虽然我的典型方法是随意走过的选择*并选择不同的语句,但这是次优。更好的方法是首先弄清楚:

我需要回答什么问题,我制作了什么假设?

写下这些,然后写下回答这些问题的查询/验证这些假设。它可能听起来很简单,但如果你做出错误的假设,你必须重新开始。我们在使用数据时都做出假设 - 如果您没有明确到他们,这是一个灾难的配方。

最近项目的一些示例:

  • 每次活动只有一行吗?
  • 该字段的可能值是什么?
  • 这个专栏是无数的吗?
  • 如果为null,则对这些空值有任何系统模式?

我个人使用鲸鱼(CLI工具,如果我感到不耐烦)或运行的dataframe(甚至计划)这些快速检查,但无论您使用什么,只需确保将它们保持持久。

最后,是的,它很好 - 继续进行选择*。有时您只需要查看一片数据。

3.与其他人联系

既然你已经有一种感觉的数据的形式,只是潜入并建立你需要建立的东西。别。您需要尽可能多地获得各种社交环境和部落知识,并且在大型组织中尤其如此。

现在是时候收集部落知识了。

 

[[385708]]

 

我知道这些人没有面孔,但是在获得一些其他社交环境之后,您难道不就让右边的家伙感到高兴吗?

不幸的是,只有这么多,您可以通过单独疏浚数据来获得。您需要与真实的人交谈(或找到一些最新的文件)。

通过查询日志(见上文),通过Github的Slog(如果您的查询是版本控制的),或者检查表的所有者是谁(您通常可以在数据上下文/发现工具中这样做,如dataframe) - 只是找一个人懈怠。

一般来说,我问以下问题:

  • 这是维持吗?
  • 这是用于{{你的场景}}的最佳数据吗?

迄今为止你所做的事情是开放的。你可能在错误的表上,但人们欣赏一些争议。

结束言论

如果这一切听起来有点过分,请查看DataFrame。我们正在构建一个数据上下文平台,使得找到所有这些信息的所有信息都很容易 - 它是免费的。搜索表,获取基本元数据,探索数据,并在一个地方获取社交上下文。好的销售。对不起,我忍不住自己 - 我对我们的产品真的很兴奋。

我希望您带走这篇文章的一条消息:将您的Ad-hoc分析与尽可能多的严谨性。在您的职业生涯中可能发生的最令人尴尬的事情之一是实现中间解释,即您的结果可能是错误的。在每次编写查询时,在不可转让的背景下设置一些最佳实践是一种很好的方法来减轻至少一些下行。

或为自己体验它。然后回到这里并再次阅读这一点。

 

责任编辑:华轩 来源: 今日头条
相关推荐

2015-10-29 09:35:12

BAT趋势数据

2014-06-17 10:57:09

2019-03-19 19:19:19

Facebook微信转型

2017-02-19 15:09:47

深度学习机器阅读

2011-03-17 15:01:11

Oracle

2013-01-17 10:09:50

JavaSpring

2021-08-11 18:23:08

数据平台IT

2023-09-11 11:05:49

软件开发TDD

2009-03-28 09:22:12

MID移动OS

2015-08-03 14:06:44

2022-02-13 15:49:15

WebAssemblKubernetes容器

2020-09-14 13:56:18

Linux卡巴斯基恶意软件

2019-01-23 11:07:32

苹果诺基亚iPhone

2022-02-28 00:14:30

人工智能数据机器学习

2014-01-23 09:53:36

物联网云计算

2015-09-21 09:33:08

2011-11-01 11:04:20

云计算外包

2018-08-20 20:22:05

区块链互联网未来

2009-03-10 19:32:09

Linux桌面虚拟化计世观点

2019-06-27 08:45:02

区块链加密货币DEFI
点赞
收藏

51CTO技术栈公众号