Question

J'ai 2 très grandes (des milliards de lignes) évasée sur les tables, Trades et StockPrices, sur un serveur distant.Je veux faire un asof rejoindre

h:hopen `:RemoteServer:Port
h"aj[`Stock`Date`Time,
        select from Trades where Date within 2014.04.01 2014.04.13,
        StockPrices
    ]"

Mais je reçois le message d'erreur (je suis Studio pour KDB+)

An error occurred during execution of the query.
The server sent the response:
splay
Studio Hint: Possibly this error refers to nyi op on splayed table

Alors quelle serait la bonne façon de faire une telle jointure?

Aussi, les performances et l'efficacité est une question avec une telle grande table -- que dois-je faire pour s'assurer de la requête ne pas prendre des heures et ne pas consommer trop de du serveur de ressources système?

Était-ce utile?

La solution

Vous devez mapper les évasée StockPrices table en mémoire.Cela peut être fait en utilisant un select requête:

q)(`::6060)"aj[`sym`time;select from trade;quote]"                      / bad
   'splay
q)(`::6060)"aj[`sym`time;select from trade;select from quote]"          / good
   sym time         prx      bid      ask
   -------------------------------------------
   aea 01:01:16.347 637.7554 866.0131 328.1476
   aea 01:59:14.108 819.5301 115.053  208.1114
   aea 02:42:44.724 69.38325 641.8554 333.3092

Cette page peut être utile pour la recherche d'erreurs de Kdb+: http://code.kx.com/q/ref/error-list/

Concernant l'optimisation de la performance de aj voir http://code.kx.com/q/ref/joins/#aj-aj0-asof-join

Aussi, si il n'y a pas de chevauchement de données entre les jours, il peut être plus rapide pour exécuter la requête sur une base de jour en jour, si possible en parallèle.

Si il y a un chevauchement de données à travers des jours, la combinaison de la date et de l'heure colonnes en une seule colonne de type timestamp permettrait d'accélérer la recherche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top