使用TPC DS工具生成資料

2021-10-25 06:11:45 字數 3215 閱讀 9068

兩種渠道

a、官網(建議直接跳過~)

ps:官方的包生成sql的時候會報錯,上面這個大神已經修復。

操作環境:ubuntu16

a、解壓

unzip  tpcds-kit-master.zip
b、編譯

編譯之前請確認依賴環境ok

ubuntu:

1 sudo apt-get install gcc make flex bison byacc git
centos/rhel:

1 sudo yum install gcc make flex bison byacc git
tpcds-kit-master/tools

make -f makefile.suite

編譯過程中報錯:

make: yacc: command not found。報錯是因為yacc沒有安裝 。

安裝yacc

sudo apt-get install -y byacc
再次編譯

又報錯對『yy_create_buffer』未定義的引用。對c/c++不熟悉,搜尋了一下也沒有相關的解答。百思不得其解之下,換了個思路。可能是第一次編譯報錯生成的錯誤檔案對第二次編譯產生的影響。

於是刪除解壓後的目錄,重新編譯成功。

如果生成dsdgen和dsqgen且無報錯,說明編譯成功

ll *gen
第一次使用這個工具我是一臉懵比的。因為官方的文件特喵的根本看不懂。回想一下,你碰到不熟悉的linux命令是怎麼做的?man或者--help,對吧。這裡也可以用--help。

先不著急生成資料,看一下幫助資訊先。

常用的引數就上面幾個。下面我們來生成1g包含所有表的資料。

等待dsdgen程式正常退出後,1g資料需要2~3min左右,進入data目錄檢視生成的資料。

假如只想生成其中某一張表的資料呢?這就需要用到-table引數了,以web_returns表為例。

./dsdgen  -scale 1 -dir ../data -table web_returns
報錯了,資訊如下:

web_returns是子表,它是依賴於父表web_sales的。生成父表的時候也會同時生成子表,我們來驗證一下。

說明一下,最終生成的資料量以少於scale值的。

dsdgen的用法暫時先總結到這裡。

4、生成sql

查詢sql使用dsqgen生成,主要用於測試資料倉儲的效能,一共99個。詳細用法可以用--help檢視幫助資訊。這裡不做介紹直接生成。

./dsqgen  -directory ../query_templates/ -template "query1.tpl" -dialect netezza -filter y > ../sql/query1.sql
檢視生成的sql:

一共有99,每乙個都要這樣生成多費勁呀。來寫個for迴圈一把生成所有的sql。

shell版:

1 #!/bin/sh

2 for i in `seq 1 99`

3 do

4 ./dsqgen -directory ../query_templates/ -template "query$.tpl" -dialect netezza -filter y > ../sql/query$.sql

5 done

python3版:

1 #coding:utf-8

2 import os

3 print("generate query sql")

4 for i in range(1,100):

5 tpl = "query"+str(i)+".tpl"

6 qsql = "query" +str(i) +".sql"

7 #拼接命令

8 cmd = "./dsqgen -directory ../query_templates/ "+"-template "+tpl+" -dialect netezza -filter y > "+"../sql/"+qsql

9 #print(cmd)

10 #執行命令

11 os.system(cmd)

去sql目錄下檢視剛才生成的sql:

這種情況下還是shell更快一點。

5、總結

通過tpc-ds,可以生成指定量級的資料。

碰到報錯不要慌,先google或bing,不要用某度,原因***。

tpc-ds基本用法已經總結完了,但是實際操作中還有很多問題,比如:

後面有時間再總結。

TPC DS 生成資料

其實,使用 tpc ds 生成系統效能測試的資料,說簡單也簡單,說難,確實也不好做!關鍵是在每一步的操作中,如果遇到了問題,該怎麼樣處理,這個是個問題的關鍵。下面就將生成的步驟簡單描述一下,好記性不如爛筆頭呀!通過以上六步驟,就可以將 tpc ds 資料全部 load 到對應的表中去,也就生成了相應...

Matlab生成資料

有四種基本隨機數函式 rand randi randn 和 randperm。rand 函式返回在 0 和 1 之間均勻分布的實數。例如,r1 rand 1000,1 r1 是乙個含有均勻分布浮點實數的 1000 x 1 的列向量。r1 中的所有值均處於開區間 0,1 內。這些值的直方圖大致上是扁平...

使用PowerDesigner生成資料庫測試資料

方法如下 a 在powerdesigner 建表 b 然後給每乙個表的字段建立相應的摘要檔案 步驟如下 model test data profiles配置每乙個字段摘要檔案general 輸入name code 選擇class 數字 字元 時間 型別 選擇generation source aut...