我使用的是传统的从数据源(adobe analytics)到mysql数据仓库,再到用于可视化的tableau前端的背对背etl堆栈。我的问题围绕着清理数据/Map的最佳实践以及在哪一步。
1) 清理:我们没有从源(adobe)到数据仓库的自动(ssis等)连接器,所以我们只能定期上传csv文件。由于各种原因,这些文件变得不太理想(拼写错误、空值等)问题:是应该对csv文件进行“清理”,还是一旦数据上传到mysql数据仓库(在表/视图中)?2) Map:许多不同的最终用户用例要求我们将数据Map到表(地理区域、帐户类型等)。。。这应该在数据仓库(mysql joins)中完成,还是在前端(tableau)中同样好?我认为,真正的问题在于性能,因为在这两个步骤中,您都可以相对轻松地做到这一点。
谢谢!
1条答案
按热度按时间wfauudbj1#
1) 清理:我建议您将csv文件中的数据加载到一个临时数据库中,并在它到达您连接tableau的数据库之前从那里进行清理。这样可以保留原始文件,如果需要,最终可以重新加载这些文件。我不确定“传统的从后到前的etl堆栈”是什么,但是像microsoftsiss或pentaho data integrator(免费)这样的etl工具将对构建这些过程提供有价值的帮助,然后您可以定期或每次将新文件上载到目录时运行etl作业。这是一个很好的例子:https://docs.microsoft.com/en-us/sql/2014/integration-services/lesson-1-create-a-project-and-basic-package-with-ssis
2) “Map”:你应该有一个数据模型,可能是一个维度模型,建立在tableau所连接的数据库上。此数据模型应存储干净的“业务建模”数据。在转换数据时,应该执行查找(连接/Map),以便将其加载到数据模型中。让tableau探索一个干净数据的维度模型对于ux/性能也会更好。
整个流程看起来像:csv->staging database->clean/transform/map->business data model(database)->tableau