2017-10-06 1 views
0

Ich bin neu in Teradata und auch Scala. Ich führe eine Abfrage in scala aus, die SQL Exception wirft, aber die gleiche Abfrage läuft gut in Teradata Studio.SCALA TERADATA SQL Ausnahme

Unten ist die Abfrage:

SELECT COUNT(loan_no) 
    ,field1 
    ,field2 
    ,field3 
FROM testdb.loan 
WHERE field1 < DATE '2017-09-30' 
GROUP BY field1 
    ,field2 
    ,field3 
ORDER BY field1 

Fehler ist erhalten:

java.sql.SQLException: [Teradata Database] [TeraJDBC 15.00.00.20] [Error 3707] [SQLState 42000 ] Syntaxfehler, erwartet etwas wie ein Name oder eine Unicode-Begrenzungs-ID oder ein 'UDFCALLNAME' Schlüsselwort oder '(' zwischen dem 'FROM' Schlüsselwort und dem 'Select' Schlüsselwort.

Scala Code

val queryString = "SELECT COUNT(loan_no),field1,field2,field3 FROM testdb.loan WHERE field1 < DATE '2017-09-30' GROUP BY field1,field2,field3 ORDER BY field1" 

val connString = 
"jdbc:teradata://test.udaystd.com/,TMODE=TERA,charset=UTF8, 
user="+userid+", password="+passwd+", ,charset=UTF8" 

val dbdriver = "com.teradata.jdbc.TeraDriver" 

val jddf = sqlContext.load("jdbc", 
    Map("url" -> connString, 
    "dbtable" -> queryString, 
    "driver" -> dbdriver)) 

Bitte helfen.

+0

Können Sie den Scala-Code anzeigen, der diese Abfrage enthält? Klingt wie das möglicherweise ein Problem mit der Art, wie Sie das Zeichenfolgenliteral erstellen. –

+0

können Sie versuchen, es ohne where-Klausel auszuführen? –

+0

Ich habe das auch versucht und das Ergebnis ist der gleiche Fehler. Der einzige Weg, wie es funktioniert, ist, wenn ich es wie habe ((wählen Sie * aus testdb.loan) als loandata) –

Antwort

0

Ich war unter Verwendung des folgenden Code

val queryString = " (SELECT COUNT(loan_no) as loancnt 
,field1,field2,field3 FROM testdb.loan WHERE field1 < DATE '2017-09-30' 
GROUP BY field1,field2,field3) as LOANDATA" 

auch beheben kann, ich nicht im Auftrag benutzen kann. Also habe ich es bestellt, nachdem ich es im Dataframe bekommen habe.

val orderedDF = df.orderBy($"field1".desc) 
+0

Scheint wie scala Präfixe 'SELECT * FROM ', die auch erklärt die Unfähigkeit zu' ORDER BY' hinzufügen (es ist nicht erlaubt in Abgeleitete Tabelle). Ich habe nie mit Scala gearbeitet, aber es sollte eine Einstellung geben, um das zu ändern. – dnoeth

+0

Sie haben recht, wenn Sie * vor dem Präfix auswählen. Wenn ich es anders brauche, muss ich Resultset verwenden und dieses in df umwandeln –