Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

Oracle DBからInput Data Toolで抽出前にランダムサンプリングしたい

Yoshiro_Fujimori
オーロラ

いつもお世話になっております。

Oracle DBにある比較的大きなテーブル(約17GB)からデータを抽出したいのですが

Input Data ToolでVisual Query Builderからwhere条件で絞ろうとすると

どうしても4GB程度までしか絞り込みができません。

 

Alteryx側のデータの置き場の制約があり、もう少しデータを絞りたく、ランダムサンプリングを試みているのですが、

Input Data ToolのSQL Editor画面で以下のように書いた後に"Test Query"すると;

SELECT * 
  FROM (SELECT [列名]
          FROM [テーブル名]
         WHERE [絞り込み条件])
WHERE random() < 0.0001

以下のようなエラーとなります。

(無視してWorkflowを実行しても同じエラーがResult Windowに表示されます。)

Yoshiro_Fujimori_0-1660725295433.png

 

Input Data ToolからのSQLでは上記のような入れ子構造のSQLは実行できないのでしょうか。

 

なお、このサイト https://dev.classmethod.jp/articles/alteryx-in-db/ を見て、

In-DBツールで行けるのかな、とも思っておりますが、まだ試しておりません。

In-DBツールが目指す方向であれば、そちらに方向転換いたします。

10件の返信10
Yoshiro_Fujimori
オーロラ

@AkimasaKajitani さん ありがとうございます。少しずつ切り分けるのが大事ですね。

 

Oracleで

select * from (select * from hogehoge) 

および

select * from (select * from hogehoge) where RowNum <= 10

としてTest Queryすると、いずれも

Yoshiro_Fujimori_0-1660898566075.png

となりました。

 

DB2の場合、

select * from (select * from hogehoge) 

では、上と同じ "successful" となりますが

select * from (select * from hogehoge) where RowNum <= 10

では、前にご報告したのと同じ

No Columns Returned

となりました。

 

サブクエリがうまくいかないのはDB2の場合に限るようです。