首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言实例:检查视图是否可用

背景

在数据仓库中有时会使用。

视图是一张虚拟表,视图并不另外单独存储和复制数据,它只是一个结构。

视图是基于一些表来实现的,它可以是表中数据记录的子集,也可以是表中某几个字段形成的子集。

如果这些表的定义发生了变化,将不会反映到视图的定义中。此时将根据需要进行手工的同步更新或维护。

由于数据仓库设计地不断迭代,已经业务需求的变化,视图依赖的物理表可能会变更字段名或者减少字段,会导致原定义的视图不再可用,查询会报错。

对数仓中的视图的可用性做检测,以便发现视图定义已经失效的问题并及时纠正更新。

目标

对 Hive 数据仓库中所有的视图查询验证,发现查询报错时,记录对应的视图信息。

R语言实现

获取视图列表

要与 Hive 数据仓库建立连接,基本前提是服务器开放了连接,两边网络要通,驱动也要安装等。

上述条件满足后,该案例通过 建立连接 ,并使用 方式指定连接信息,以避免直接暴露服务器地址和账号与秘密。

Hive 元数据中包含了表信息和表类型,可以通过如下表SQL语句获得视图列表。

生成对应的SQL查询语句

将获得的每个视图,生成对应的查询语句。

初始化写入一个日志文件,先记录执行日期。

循环查询及错误处理

这里直接使用 for 循环而不使用向量化运算,只需要顺序执行没段SQL即可,也就是串行执行。

查询结束后关闭与服务器的连接。

最后查询日志文件 即可,如果有某个视图的日志,说明查询报错,也就是视图定义有问题,可能字段、表不存在了或者代码逻辑错误,需要人工去排查。

总结

将R语言与数据库建立连接之后,可以获得数据库表中的信息,并根据业务逻辑建立查询SQL,通过循环查询及对结果的交互反馈实现一些特殊的应用场景,该案例就是检查视图的有效性。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180730G1HK3A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券