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小時內與您取得聯系。