如何分析Apache Spark数据建模中的时间维度,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
数据建模是数据分析重要的组成之一,正确的建立模型有助于用户更好地解答业务相关的问题。在过去几十年中,数据建模技术也一直是SQL数据仓库的基础。
Apache Spark作为新一代的数仓技术的代表,我们能够在 Spark 中使用早期的数据建模技术。这使得Spark data pineline 更加有效。下面我将讨论spark中不同的数据建模。
单一日期列在许多数据集中很常见。有些数据集可能需要针对多个日期列分析数据。那么在之前的文章中所讨论的策略是不够的。因此,我们需要扩展日期维度逻辑来容纳多个日期列。
下面的代码向股票数据添加了一个名为issue_date的日期列,以模拟多个日期的场景。
val appleStockDfWithIssueDate = appleStockDf. withColumn("issue_date",add_months(appleStockDf("Date"),-12))
现在,如果用户希望根据表示交易日期的日期列和表示给定股票何时发行的发布日期列进行分析,那么我们需要使用多个日期维。
为了分析多个日期,我们需要多次连接日期维度。我们需要使用不同前缀的数据维来创建视图,这样我们就可以完成相同的工作。
val issueDateSchema = StructType(dateDf.schema.fields.map(value =>
value.copy(name = "issue_"+value.name)))
val issueDf = sparkSession.createDataFrame(dateDf.rdd, issueDateSchema)
在上面的代码中,我们创建了一个名为issueDf的新df,它为所有列添加了一个名为issue的前缀,表示将这个日期维度组合为issue_date。
一旦我们准备好了新的日期维度,现在我们就可以连接股票数据中的两个日期了。
val twoJoinDf = appleStockDfWithIssueDate.join(dateDf, appleStockDfWithIssueDate.col("Date") === dateDf.col("full_date_formatted")) .join(issueDf, appleStockDfWithIssueDate.col("issue_date") === issueDf.col("issue_full_date_formatted"))
一旦我们做了连接,我们可以分析发行日期如下
twoJoinDf.groupBy("issue_year","issue_quarter"). avg("Close"). sort("issue_year","issue_quarter") .show()
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。