DS :Output Delivery Sysstem
其实就是把做好得报告用PDF,HTML,CSV等其他格式送出去得一个命令
在SAS BASE 的考试里出现得相当频繁
1.哪一个命令产生得文件EXCEL无法识别?
A. MSOFFICE2K
B. EXCELXP
C. CSVALL
D. WINXP
答:WINXP, CSVALL 虽然不是EXCEL格式,但是Excel 可以读取CSV格式文件
2.这道题我是第3次做,惊出一身冷汗
ods csvall file='c:\test.cvs'; /*注意看这里,test.cvs,是不是后缀有问题?*/
proc print data=WORK.ONE;
var Name Score Grade;
by IdNumber;
run;
ods csvall close;
CSV文件可以由文本文件编辑器和EXCEl打开,这个后缀为CVS得文件,怎么操作?
答:这是个Tricky!ods csvall 规定了文件的格式,test.cvs就是这个名字
它还是一个CSV文件,第3遍才发现,这个点还是把我骗过去了
3.让你挑花眼
A. ods html open='sales.html';
ods html close;
B. ods file='sales.html' / html;
ods file close;
C. ods html file='sales.html';
ods html close;
D. ods file html='sales.html';
ods file close;
哪一个格式是对的?对的只有一个,最朴素的那个
ODS html file=‘ ’;/* ODS html 要送html文件了, 文件file=‘ ’送到这里*/
ODS html close; /* ODS html 完成*/
我将在3次复习后,把知识点编织进一个分析案例
只需要做一次典型的案例分析,就自然的把知识点融会贯通
不需要死记硬背了。而且,还能用于实际工作
关注转发,一起学SAS吧
言:
不是做数仓的,但是也需要了解数仓的知识。 其实分层好多因人而异,问了同事好多分层的区别也不是很清晰。 所以后续有机会还是跟数仓的同事碰一下吧~
一. 各种名词解释
1.1 ODS是什么?
1.2 数据仓库层DW?
数据仓库层(DW),是数据仓库的主体.在这里,从 ODS 层中获得的数据按照主题建立各种数据模型。这一层和维度建模会有比较深的联系。 细分:
1.2.1 DWD明细层?
明细层(ODS, Operational Data Store,DWD: data warehouse detail)概念:是数据仓库的细节数据层,是对STAGE层数据进行沉淀,减少了抽取的复杂性,同时ODS/DWD的信息模型组织主要遵循企业业务事务处理的形式,将各个专业数据进行集中,明细层跟stage层的粒度一致,属于分析的公共资源数据生成方式:部分数据直接来自kafka,部分数据为接口层数据与历史数据合成。这个stage层不是很清晰
1.2.2 DWM 轻度汇总层(MID或DWB, data warehouse basis)
1.2.3 DWS 主题层(DM,data market或DWS, data warehouse service)
1.3 APP?
数据产品层(APP),这一层是提供为数据产品使用的结果数据。 主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、Mysql 等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。 如我们经常说的报表数据,或者说那种大宽表,一般就放在这里。
应用层(App)
1.4 数据的来源
数据主要会有两个大的来源: 业务库,这里经常会使用 Sqoop 来抽取 我们业务库用的是databus来进行接收,处理kafka就好了。 在实时方面,可以考虑用 Canal 监听 Mysql 的 Binlog,实时接入即可。(有机会补一下这个canal) 埋点日志,线上系统会打入各种日志,这些日志一般以文件的形式保存,我们可以选择用 Flume 定时抽取,也可以用用 Spark Streaming 或者 Storm 来实时接入,当然,Kafka 也会是一个关键的角色。 还有使用filebeat收集日志,打到kafka,然后处理日志 注意: 在这层,理应不是简单的数据接入,而是要考虑一定的数据清洗,比如异常字段的处理、字段命名规范化、时间字段的统一等,一般这些很容易会被忽略,但是却至关重要。特别是后期我们做各种特征自动生成的时候,会十分有用。
1.5 ODS、DW → App层
这里面也主要分两种类型:
1.6 维表层DIM?
维表层(Dimension) 最后补充一个维表层,维表层主要包含两部分数据:高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。
1.7 层级的简单分层图
见下图,对DWD层在进行加工的话,就是DWM层(MID层)(我们的数仓还是有很多dwm层的)
这里解释一下DWS、DWD、DIM和TMP的作用。
二. 问题
2.1 DWS 与 DWD?
问答一: dws 和 dwd 的关系问:dws 和dwd 是并行而不是先后顺序?答:并行的,dw 层问:那其实对于同一个数据,这两个过程是串行的?答:dws 会做汇总,dwd 和 ods 的粒度相同,这两层之间也没有依赖的关系问:对呀,那这样 dws 里面的汇总没有经过数据质量和完整度的处理,或者单独做了这种质量相关的处理,为什么不在 dwd 之上再做汇总呢?我的疑问其实就是,dws的轻度汇总数据结果,有没有做数据质量的处理?答:ods 直接到 dws 就好,没必要过 dwd,我举个例子,你的浏览商品行为,我做一层轻度汇总,就直接放在 dws 了。但是你的资料表,要从好多表凑成一份,我们从四五份个人资料表中凑出来了一份完整的资料表放在了 dwd 中。然后在 app 层,我们要出一张画像表,包含用户资料和用户近一年的行为,我们就直接从dwd中拿资料, 然后再在 dws 的基础上做一层统计,就成一个app表了。当然,这不是绝对,dws 和 dwd 有没有依赖关系主要看有没有这种需求。
2.2 ODS与DWD区别?
问:还是不太明白 ods 和 dwd 层的区别,有了 ods 层后感觉 dwd 没有什么用了。答:嗯,我是这样理解的,站在一个理想的角度来讲,如果 ods 层的数据就非常规整,基本能满足我们绝大部分的需求,这当然是好的,这时候 dwd 层其实也没太大必要。 但是现实中接触的情况是 ods 层的数据很难保证质量,毕竟数据的来源多种多样,推送方也会有自己的推送逻辑,在这种情况下,我们就需要通过额外的一层 dwd 来屏蔽一些底层的差异。问:我大概明白了,是不是说 dwd 主要是对 ods 层做一些数据清洗和规范化的操作,dws 主要是对 ods 层数据做一些轻度的汇总?答:对的,可以大致这样理解。
2.3 app层干什么的?
问答三:app 层是干什么的?问:感觉数据集市层是不是没地方放了,各个业务的数据集市表是应该在 dwd 还是在 app?答:这个问题不太好回答,我感觉主要就是明确一下数据集市层是干什么的,如果你的数据集市层放的就是一些可以供业务方使用的宽表表,放在 app 层就行。如果你说的数据集市层是一个比较泛一点的概念,那么其实 dws、dwd、app 这些合起来都算是数据集市的内容。问:那存到 Redis、ES 中的数据算是 app层吗?答:算是的,我个人的理解,app 层主要存放一些相对成熟的表,能供业务侧使用的。这些表可以在 Hive 中,也可以是从 Hive 导入 Redis 或者 ES 这种查询性能比较好的系统中。
三. 总结
另一个博主的图蛮好:
主题(Subject)是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。
装 wget
yum install wget -y
创建lnmp文件 用于安装lnmp
mkdir /lnmp
cd /lnmp
安装lnmp
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp
选择安装mysql 5.6
输入数据库密码
开启indb 一定要开启 否则无法运行seafile
安装php 7.0
默认就行
安装完成
创建 seaflie文件夹
mkdir /opt/seafile/
cd /opt/seafile/
下载seafile安装包
wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_7.0.5_x86-64.tar.gz
解压seafile安装包
tar -zxvf seafile-server_7.0.5_x86-64.tar.gz
mv seafile-server-7.0.5 seafile-server 改个名字
cd seafile-server 进入安装包文件夹
安装必要依赖
yum install python python-setuptools MySQL-python python-urllib3 python-ldap -y
安装seafle程序
./setup-seafile-mysql.sh
按下回车 提示输入 名称 随便输入
输入服务器IP地址
输入 刚刚创建的数据库密码 这里不会显示 输入完直接回车
等待安装完成
安装完成
开启相关端口
开启防火墙
systemctl start firewalld
开启防火墙开机自启
systemctl enable firewalld
开放端口
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8082/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=8889/tcp --permanent
firewall-cmd --zone=public --add-port=10001/tcp --permanent
firewall-cmd --zone=public --add-port=12001/tcp --permanent
让端口生效
firewall-cmd --reload
启动seafile
./seafile.sh start
./seahub.sh start
创建管理员邮箱和密码
设置开机自启seafile
新建seafile.service文件
vi /etc/systemd/system/seafile.service
输入以下内容(注意修改${seafile_dir}为你的seafile目录)
[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
# 如果没有使用memcached则去掉memcached.service
After=network.target mariadb.service memcached.service
[Service]
Type=oneshot
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
# 如果seahub使用了nginx反代,请修改为 ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start-fastcgi
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh restart
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh restart
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
RemainAfterExit=yes
# User 和 Group 如果未建立seafile用户和用户组,则修改为root,否则无法启动.
User=root
Group=root
[Install]
WantedBy=multi-user.target
运行systemctl daemon-reload使配置生效
systemctl daemon-reload
命令
systemctl start seafile #启动seafile
systemctl stop seafile #停止seafile
systemctl enable seafile #设置seafile随系统启动
systemctl is-enabled seafile #检查seafile是否已经设置为自启动
systemctl disable seafile #关闭seafile随系统启动
设置上传下载限制
vi /opt/seafile/conf/seafile.conf
# 上传文件最大为20000M.
max_upload_size=20000
# 最大下载目录限制为20000M.
max_download_dir_size=20000
添加一个端口网站 具体如下
lnmp vhost add
创建日志文件存放
touch /opt/seafile/logs/seahub.access.log
touch /opt/seafile/logs/seahub.error.log
定位到nginx下的配置文件
cd /usr/local/nginx/conf/vhost/
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
"" $host;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
server
{
listen 80;
server_name 10.25.2.220;
index index.html index.htm index.php default.html default.htm default.php;
server_name seafile.example.com;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;
client_max_body_size 0;
access_log /opt/seafile/logs/seahub.access.log;
error_log /opt/seafile/logs/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
location /onlyofficeds/ {
proxy_pass http://10.10.1.23:8889/;
proxy_http_version 1.1;
client_max_body_size 100M; # Limit Document size to 100MB
proxy_read_timeout 3600s;
proxy_connect_timeout 3600s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host/onlyofficeds;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
设置默认的 端口80
cd /usr/local/nginx/conf
vi nginx.conf
重启nginx
service nginx restart
yum -y install wget
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum repolist
yum -y install docker-ce
安装完成后启动 docker
systemctl start docker
systemctl enable docker
vi /etc/docker/daemon.json
添加
{
"registry-mirrors":["https://6w4lyiz2.mirror.aliyuncs.com"]
}
按下ESC 在输入 :wq 保存退出
docker run -i -t -d --restart=always -p 8889:80 onlyoffice/documentserver
#--restart=always表示每次开机,只要当docker被设置为开机启动,此onlyoffice就会自动运行 等待会有点久,如果等待6分钟-10分钟还没下载完成就 ctrl+c结束 重新运行
安装完成
查看docker镜像
docker ps
访问:打开浏览器访问http://x.x.x.x:8889/welcome x.x.x.x替换成自己的服务器IP
vi /opt/seafile/conf/seahub_settings.py
在此文件下末尾添加如下内容(把10.25.7.251改为自己服务器ip地址):
# Enable Only Office
ENABLE_ONLYOFFICE=True
VERIFY_ONLYOFFICE_CERTIFICATE=False
ONLYOFFICE_APIJS_URL='http://10.25.2.220:8889/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION=('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')
ONLYOFFICE_EDIT_FILE_EXTENSION=('docx', 'pptx', 'xlsx','ppt','xls','doc')
设置邮箱系统 修改对于的邮件和密码
vi /opt//opt/seafile/conf/seahub_settings.py
EMAIL_USE_SSL=True
EMAIL_HOST='smtp.exmail.qq.com'
EMAIL_HOST_USER='centosm@qq.com邮箱'
EMAIL_HOST_PASSWORD='hQsyPfCWVYi密码'
EMAIL_PORT='465'
DEFAULT_FROM_EMAIL=EMAIL_HOST_USER
SERVER_EMAIL=EMAIL_HOST_USER
修改端口设置(不修改的话无法在线编辑)把这里的8000端口删除
/opt/seafile/seafile-server/seafile.sh restart
/opt/seafile/seafile-server/seahub.sh restart
登入账号密码
点击公共----点击添加资料库----点击新建资料库----新建一个文件夹 test
进入test,上传一个 word excel ppt pdf 检查是能够在线编辑
*请认真填写需求信息,我们会在24小时内与您取得联系。