对数据库中的数据进行分析是一种好习惯吗?

Is it good practice to do analysis on data within a database?

我最近在一次采访中被问到这个问题:你有一个 SQL table 包含一列 text,其中每一行包含多个分隔的单词按空格。您将如何编写一个 SQL 查询来根据单词在 table 中出现的频率对单词进行排序?

作为 SQL 的初学者,至少可以说我被难住了。我可以通过 Python 脚本想到一个简单的解决方案。所以我向他建议了这个,但是面试官想要一个纯粹使用 SQL 的解决方案,说他们经常需要不断地对实时流数据进行如此快速的分析,并且频繁地进行数据转储、加载Python,然后进行分析。

我在生产环境中处理大量数据的经验并不多,所以有人可以告诉我面试官的推理是否合理吗?你会如何解决这个问题?

毫无疑问,我写了一本名为“使用 SQL 和 Excel 进行数据分析”的书,并在哥伦比亚大学教授了一门名为“使用 SQL 和关系的数据分析”的课程数据库”。显然,使用关系数据库可以做很多分析和很好的分析。

文本分析绝对是无所不能。由单词组成的字符串不是传统的关系型数据,数据库也没有很好的字符串处理功能。大多数数据库都有某种方法可以将此类数据转换为倒排索引(Bob Kaufman 在评论中恰当地描述了这一点)。但是,如果您必须处理标点符号、单词形式和同义词,这会变得更加复杂——更不用说情感分析、歧义消除等了。

我怀疑面试官问的更多是关于你对数据库的了解以及你对文本分析的了解,而不是针对特定的解决方案(“将列拆分为倒排索引并使用它。你如何创建倒排索引取决于数据库。”)。这是查看您是否真正理解这两个主题的一种方式。