当前位置: 首页 > article >正文

hive之视图

一:什么是视图

视图是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。

二:为什么要使用视图

视图优点:

  • 简单:使用视图的用户完全不需要关心后面对应的表的结构,关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。

  • 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。换言之:外部需要使用我们数仓的hive数据,我们需要让他们使用,但是不能把数据提供给他们,这个时候视图的作用就体现出来啦。

  • 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

  • 省事(工作实际):有时视图的创建是因为分析者需要分析业务系统的业务表,数仓只负责进行业务表接入数仓,然后创建视图交付给分析者,不需要承担对视图对应业务含义的解释;同时对视图的数据质量时效性也不用负担责任,大大减轻了交付压力。

三:hive中的视图和mysql中视图区别

  • hive中的视图只有逻辑视图,没有物化视图;

  • 视图只能查询,不能load/insert/update/delete数据;

  • 视图在创建的时候只保留一份元数据,当查询视图的时候,才开始执行视图对应的那些子查询;

四:视图语法

drop view if exist ‘$target.table’;
create view if not exist 'target.table'
(
		id  comment '主键ID'
    ,code comment '字段'
) comment ‘视图注释’
as select 
	id,
  code
from original_table;

五:视图调度/回溯

一般来说视图是不需要调度的,可能运行一次就创建成功了。

  • 含有{now.date}这种每日调度时间的视图,在视图里面就会根据{now.date}进行调度过滤,调度会生效的,每次只会保留最后一次调度的视图;(备注:{now.date}是和调度相关的!)

  • 对于不含{now.date}的,视图结果取决于视图的sql逻辑和数据源本身,没有被{now.date}进行过滤喔!


http://www.kler.cn/a/2843.html

相关文章:

  • Wend看源码-Java-集合学习(List)
  • 面试题整理12----K8s中Pod创建常见错误
  • 音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现
  • Spring基础分析14-用户认证与授权
  • 【C语言】库函数常见的陷阱与缺陷(二):字符串转化函数[3]--strtol
  • lxml 解析xml\html
  • 手写一个Promise
  • maya python 中的maya.cmds 与maya.mel模块的区别笔记
  • 新闻文本分类任务:使用Transformer实现
  • A.机器学习入门算法(六)基于天气数据集的XGBoost分类预测
  • 用嘴写代码?继ChatGPT和NewBing之后,微软又开始整活了,Github Copilot X!
  • 【史上最全面esp32教程】oled显示篇
  • 第十四届蓝桥杯三月真题刷题训练——第 21 天
  • 【尝鲜版】ChatGPT插件开发指南
  • 二维图像处理到三维点云处理
  • 嵌入式系统 - 对话
  • LInux下安装libreoffice(用于Linux下Word转pdf,附代码)
  • 无需公网IP,远程连接SQL Server数据库【内网穿透】
  • 【Unityc#专题篇】之c#基础篇
  • ASO优化之应用商店中的A/B测试——改良版
  • 菜鸟刷题Day5
  • FPGA打砖块游戏设计(有上板照片)VHDL
  • React 入门(超详细)
  • 从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构
  • 基于springboot框架实现校园博客系统【源码+论文】展示
  • python 使用for循环删除列表元素