Q 語言 - 磁碟上的表格



硬碟上的資料(也稱為歷史資料庫)可以儲存為三種不同的格式 - 平面檔案、擴充套件表和分割槽表。這裡我們將學習如何使用這三種格式儲存資料。

平面檔案

平面檔案完全載入到記憶體中,因此其大小(記憶體佔用)應該很小。表格完全儲存在磁碟上的一個檔案中(因此大小很重要)。

用於操作這些表格的函式是set/get -

`:path_to_file/filename set tablename

讓我們舉個例子來演示它是如何工作的 -

q)tables `.
`s#`t`tab`tab1 

q)`:c:/q/w32/tab1_test set tab1
`:c:/q/w32/tab1_test

在 Windows 環境中,平面檔案儲存在以下位置 - C:\q\w32

Windows Environment

從磁碟(歷史資料庫)獲取平面檔案,並使用get命令,如下所示 -

q)tab2: get `:c:/q/w32/tab1_test

q)tab2

   sym    |   time           price   size
--------- | -------------------------------
  APPLE   | 11:16:39.779   8.388858   12
  MSFT    | 11:16:39.779   19.59907   10
  IBM     | 11:16:39.779   37.5638    1
 SAMSUNG  | 11:16:39.779   61.37452   90
  APPLE   | 11:16:39.779   52.94808   73

一個新表tab2被建立,其內容儲存在tab1_test檔案中。

擴充套件表

如果一個表中有太多列,那麼我們將這些表儲存為擴充套件格式,即我們將其儲存在磁碟上的一個目錄中。在目錄中,每列都以與列名相同的名稱儲存在一個單獨的檔案中。每列都作為對應型別的列表儲存在 kdb+ 二進位制檔案中。

當我們需要頻繁訪問其眾多列中的一些列時,將表儲存為擴充套件格式非常有用。擴充套件表目錄包含.d二進位制檔案,其中包含列的順序。

與平面檔案非常類似,可以使用set命令將表儲存為擴充套件格式。要將表儲存為擴充套件格式,檔案路徑應以反斜槓結尾 -

`:path_to_filename/filename/ set tablename

要讀取擴充套件表,我們可以使用get函式 -

tablename: get `:path_to_file/filename

注意 - 要將表儲存為擴充套件格式,它必須是未加鍵且已列舉的。

在 Windows 環境中,您的檔案結構將如下所示 -

File Structure

分割槽表

分割槽表提供了一種有效的方法來管理包含大量資料的巨大表格。分割槽表是分佈在多個分割槽(目錄)中的擴充套件表。

在每個分割槽內,一個表將有自己的目錄,其結構與擴充套件表相同。可以根據天/月/年對錶格進行拆分,以便最佳化對其內容的訪問。

要獲取分割槽表的內容,請使用以下程式碼塊 -

q)get `:c:/q/data/2000.01.13              // “get” command used, sample folder

quote| +`sym`time`bid`ask`bsize`asize`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0
0 0 0….

trade| +`sym`time`price`size`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 ….

讓我們嘗試獲取交易表的內容 -

q)get `:c:/q/data/2000.01.13/trade

   sym    time            price     size    ex
--------------------------------------------------
    0   09:30:00.496    0.4092016    7      T
    0   09:30:00.501    1.428629     4      N
    0   09:30:00.707    0.5647834    6      T
    0   09:30:00.781    1.590509     5      T
    0   09:30:00.848    2.242627     3      A
    0   09:30:00.860    2.277041     8      T
    0   09:30:00.931    0.8044885    8      A
    0   09:30:01.197    1.344031     2      A
    0   09:30:01.337    1.875        3      A
    0   09:30:01.399    2.187723     7      A

注意 - 分割槽模式適用於每天有數百萬條記錄的表格(即時間序列資料)

Sym 檔案

Sym 檔案是一個 kdb+ 二進位制檔案,包含所有擴充套件表和分割槽表中的符號列表。可以使用以下方法讀取它,

get `:sym

par.txt 檔案(可選)

這是一個配置檔案,當分割槽分佈在多個目錄/磁碟驅動器上時使用,幷包含磁碟分割槽的路徑。

廣告