質問: ### 前提・実現したいこと treasuredataでworkflowを作成しています。 同じSQLなのにworkflowで実行すると「No result records to preview」になる原因が知りたいです。 (手動で実行すると期待する結果が出力される) treasuredataに問い合わせたところ、 「複数のテーブルを結合に利用しているため、タイミングによって何処かのテーブルが空であったりJOINできない状態のデータとなる可能性がある。それにより今回のSQLも影響を受けて0件になることが考えられる」とのこと。 →この"タイミングによって"という部分、workflowの利用によって空になる原因はどこにあるのでしょうか?(digdag特有の挙動?) ### 発生している問題・エラーメッセージ 手動では問題なく出力されるSQLが、workflowの利用によって、結果がたまに0件となることが発生します。 下記のようにwithとinner joinを使用しています。 (SQLだけの問題なのか、workflowによる影響なのかがわかりません。) ### 該当のソースコード ``` with A as ( 〜〜〜〜〜〜 from B inner join C ON 〜〜〜〜〜〜 inner join D ON 〜〜〜〜〜〜 inner join( 〜〜〜〜〜〜 ) ON 〜〜〜〜〜〜 〜〜〜〜〜〜 ``` ### 試したこと workflowではスプレットシートに結果を出力するようにしていますが、 スプレットシートへの出力以前の問題なので、今回は恐らく影響はないかと思います。 ### 補足情報(FW/ツールのバージョンなど)
回答: > > treasuredataに問い合わせたところ、 > > 「複数のテーブルを結合に利用しているため、タイミングによって何処かのテーブルが空であったりJOINできない状態のデータとなる可能性がある。それにより今回のSQLも影響を受けて0件になることが考えられる」とのこと。 > > > 問い合わせ時には、対処方法は示されなかったのですか? 回答が結合云々のタイミングという話であるなら、withやサブクエリーは使用せず、from句では単純な結合のみとしてみてはどうでしょうか。 追記 TreasureData Workflow (digdag)を使ってみた(超入門)[メモ] TreasureData Workflowは、使ったことは無いのですが、上記を参考にすると、 Aの結果でテーブルを作成し、BのSQLはtest_aを参照するという事になるかと。 AもBもSQLなら、SQLを纏めれば良いのだと思います。 ``` +task1: td>: queries/A.sql create_table: test_A +task2: td>: queries/B.sql create_table: test_B ```