2017-09-11 1 views
1

J'utilise Snappydata pour exécuter certaines requêtes, et utiliser le sql avec la déclaration:Snappydata SQL WITH

WITH x AS (
    SELECT DISTINCT col_a, col_b 
    FROM table_a 
) 
INSERT INTO table_b 
SELECT x.col_a, x.col_b 
FROM x 
    JOIN table_c c ON x.col_a = c.col_a and x.col_b = c.col_b 

Ce code sql fonctionne très bien lors de l'exécution en mode local, mais lorsque je soumets le fichier jar compilé groupe Snappydata, il renvoie une erreur indiquant la table « APP.X » n'existe pas,

org.apache.spark.sql.TableNotFoundException: Table 'APP.X' not found; 

une idée pourquoi cela se produit?

Répondre

0

essayer d'ajouter de x

WITH x AS (
    SELECT DISTINCT col_a, col_b 
    FROM table_a 
) 

INSERT 
    INTO table_b 
SELECT x.col_a, 
     x.col_b 
    FROM x 
    JOIN table_c c 
    ON x.col_a = c.col_a 
    AND x.col_b = c.col_b 
+0

Merci pour la réponse, j'ai oublié d'ajouter ce "DE x" en tapant le code pour cette question, maintenant corrigé. – user3230153

+0

cela peut aider https://github.com/SnappyDataInc/snappydata/issues/641 –

+0

merci pour le pointeur, malheureusement cela ne s'applique pas à mon cas, comme l'instruction avec ne nécessite pas de créer la table avant la main, je suis en fait suspecter le "WITH STATEMENT" n'est pas correctement pris en charge dans Snappydata – user3230153

2

Ceci est une limitation connue en raison de la résolution approximative de la règle traitement des requêtes (AQP) qui tente de résoudre le nom prématurément. Nous l'avons vu lors de l'exécution de requêtes TPC-DS. Il est fixé sur le dernier maître AQP et le correctif sera disponible en version 1.0. Pour l'instant, il y a deux options:

a) Modifier la variante sous-requête normale:

INSERT INTO table_b 
SELECT x.col_a, x.col_b 
FROM (SELECT DISTINCT col_a, col_b FROM table_a) x 
    JOIN table_c c 
    ON x.col_a = c.col_a 
    AND x.col_b = c.col_b 

b) Ou sinon en utilisant des requêtes PAQ, alors vous pouvez sortir pot snappydata-PAQ du répertoire des pots de produits

+0

Merci beaucoup pour la clarification, je suppose que pour l'instant je vais juste changer l'instruction SQL. – user3230153