KDB / q: вставки списка в таблицу - PullRequest
0 голосов
/ 22 апреля 2020

Я ищу, чтобы вставить список данных в таблицы. Я пробовал и upsert и вставить. Оба не обновили торговую таблицу.

// simTrade is a function that takes in
// number of orders and generate a table with random data

simTrade:{[nOrders]
    seed:-314159;
    openTime:`time$09:30;
    closeTime:`time$16:00;
    listCustomers:`XNYS`ARCX`XCHI`XASE`XCIS`XNAS`XBOS`XPHL`BATS`BATY`EDGA`EDGX`IEXG;
    listProducts: `Derivative`Futures`Indicies


    system "S ",string seed;
    times: asc closeTime&openTime+nOrders?390*60*1000;
    dates: asc 2015.03.01&2015.01.01+nOrders?30;
    customers: nOrders?listCustomers;
    products: nOrders?listProducts;
    orderIds: 1+til nOrders;
    versions: nOrders?5;
    sizes: 100*nOrders?10;

    trade:([]
        time:`time$();
        date:`date$();
        customer:`symbol$();    / Customer name {xyz fund, asd,fund}
        product:`symbol$();     / product name {Derivative, Equities}
        orderId:`long$();       / order id {1-10}
        version:`long$();       / version {1-10}
        size:`long$()
    )

    insert[`trade; (times;dates;customers;products;orderIds;versions;sizes)];
    show trade
 }
lob:simTrade[100]

Я попытался проверить ошибку типа данных, но не смог найти никаких проблем с ней.

Могу ли я также спросить, почему, когда я меняю insert -> upsert, возвращается ошибка evaluation error: length Спасибо за любую помощь

1 Ответ

1 голос
/ 22 апреля 2020

insert и upsert могут применяться только к глобальным переменным. table является локальной переменной, поэтому insert/upsert выдает type ошибка. Для получения более подробной информации см. insert

. Я бы предложил вам заполнить таблицы на месте :

...
trade: ([]
    time:times;
    date:dates;
    customer:customers;    / Customer name {xyz fund, asd,fund}
    product:products;     / product name {Derivative, Equities}
    orderId:orderIds;       / order id {1-10}
    version:versions;       / version {1-10}
    size:sizes
);
...
...