Query昨日かなり重いクエリを流して帰り、今朝出社してから負荷を確認したところ400本近いクエリが遅延している状況を目の当たりにした私です。月初にやるべきではなかったなぁと反省しております。AppCenterというソフトウェアがあるのですが、この製品はSQLとJavaでクエリの実行やグラフの可視化を行うことができます。今のところ基本的にはSQLで書き、クエリをダイナミックに書き換えたいときなどはJavaを使っているのですが、とあるプロジェクトでデータがロードされていなかったら処理を失敗させたいという絶妙な要望があがりました。Javaなら簡単にかけますが、そのためだけに使いたいかというとうーん...となる感じですね。ちなみにSQLでもJavaでも1つの入力フォームしかないので、1つ目の処理が正常終了したら次へみたいなレベルの処理をちゃんとやりたい場合にはJavaで書く必要があります。帰りの電車で反省中に思いついたのが、サブクエリでcountをとってcaseでわざとランタイムエラーを発生させるという方法です。特別な関数は使わないのでPrestoで試してみました。date));上の状態でまだロードの終わっていない日付、例えば2018/1/1に以下のクエリを実行すると、サブクエリ内のcntは0になり、case内の条件がtrueになりcastが実行されます。数値ではなく文字をintegerにキャストしようとするのでエラーになることが確認できます。t;ちなみにPrestoだと以下のようなエラーメッセージが出力されます。INT特殊な方法は使っていないので、ほとんどのRDBMSで適用できるんじゃないかなと思っています。したジョブでやるのがベストではありますが、こういうトリッキーな方法や考え方はたまに役に立ったりするもんなので残しておきます。feat.森高千里をもじっているので最後にライブ映像を貼っておきます。みなさまどうぞご覧くださいませ。