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の場合に限るようです。