数据仓库 - 如何使用 R 和/或 SQL 创建一个与所有维度相交的事实表

Posted

技术标签:

【中文标题】数据仓库 - 如何使用 R 和/或 SQL 创建一个与所有维度相交的事实表【英文标题】:Data Warehouse - How to create a Fact Table interecting all dimensions with R and/or SQL 【发布时间】:2017-05-07 01:47:20 【问题描述】:

我正在尝试使用 4 个维度和 2 个文件创建一个事实表,但我无法连接所有信息。我通常使用 python,但现在我必须将它与 R 和 SQL 一起使用。 我确切地知道我应该如何连接所有信息,但我不知道如何创建 de SQL Queries 来做到这一点。因此,如果有人可以帮助我,我将不胜感激。

首先,我将介绍维度,然后介绍文件。接下来我将解释连接所有内容并检索事实表行的想法

4 个维度

    Dimension Spectators:(2000 个条目)

    ID, Spectator Code, Region, Genre, age class
    

    维度小时:(1440 个条目)

    ID, Hour, Minute, Complete Hour(HH:MM:SS), Period of the day
    

    维度日期:(365 个条目)

    ID, Year, Month, Day, Complete Date (YYYY:MM:DD), Day of the week
    

    维度计划:(60000 个条目)

    ID, Station, Name of Program, Start hour of the program (HH:MM:SS), Duration(seconds), Complete Date (YYYY:MM:DD)
    

2 个文件

在维度之后我还有 2 个其他文件

    观众:(220 万个条目)

    Id (The same as Spectators File), Complete Date(YYYY:MM:DD), station, Duration of visualization(minutes), Start
    

    可视化结束(HH:MM:SS),可视化结束(HH:MM:SS)

    -观众档案:(300000 个条目)

    Id(The same as Audiences File), Spectator Code(The same as Spectators Dimension), region, genre, age class
    

不知何故,我想为表格的每一行使用这种格式来制作事实表(基于受众文件)

-观众维度的ID ||将 ID Audience 与 Spectators 文件的 ID 进行交互,然后将 Spectators 文件中的代码与 Spectators Dimension 进行交互

-日期维度的ID ||将来自受众的完整日期与来自日期维度的完整日期交互

-小时维度的 ID - 开始可视化 ||将来自受众的完整小时与来自小时维度的完整小时进行交互

-小时维度的ID - 结束可视化||将来自受众的完整小时与来自小时维度的完整小时进行交互

-程序维度的 ID(交互完成天、站以及来自观众的可视化的开始和结束之间的间隔由开始创建的完整天、站和间隔程序的持续时间+程序维度的持续时间)观众的可视化必须在程序持续时间之间才能假设事实表中的行

-可视化持续时间来自受众


如果您已经走到这一步,非常感谢!

【问题讨论】:

你走了多远?你有staged the data吗?如果是这样,您是否正在努力将transform the data 转换为您想要的格式? 【参考方案1】:

当您说您有 4 个维度和 2 个文件时,我可以假设所有这些都作为 R 上的数据框存在吗?或者这 4 个维度是您需要使用 R 连接的一些外部 RDBMS 表吗? (出于某种原因,我无法评论您的问题,因此将其写在此处的答案中)。 如果所有数据框都存在于 R 环境中,那么您可以使用 merge 来合并文件,或者使用 SQLDF 包来编写 SQL 语句。

【讨论】:

嘿!是的,我在 R 数据框中拥有所有维度和文件。我唯一的想法是真的使用 SQLDF 包问题是我没有足够的 Sql 知识来做到这一点? sqldf("select * from Spectators left join Audiences on Spectators.ID=Audiences.ID") 首先尝试这个。

以上是关于数据仓库 - 如何使用 R 和/或 SQL 创建一个与所有维度相交的事实表的主要内容,如果未能解决你的问题,请参考以下文章

mysql:在w3schools文档上学习sql语法(使用数据库创建一张表)

SpatialPolygons - 在 R 中从坐标创建一组多边形

根据“调整后的 group_by”创建一列 - R

在 Cloud Firestore 中如何制作一个,只创建一次安全规则

R语言笔记 画多个图

Mysql用存储过程和事件每月定时创建一张数据库表