Google Home MiniとIFTTTを使ってツイートしてみた
Google Home Miniを買ったので、IFTTTを使って喋った内容がツイートできるようにしました。
いつものように「OK、Google」でGoogle Assistantを呼び出し、 「ツイート」と言ったあとに続く言葉をツイートしてもらうように設定してみました。 言語は日本語を設定しているのですが、トリガーになる発言が「ツイート」だけでは失敗しそうな気がしたので「Tweet」をオプションに追加しています。*1
完成したアプレット。
試しに「Google Homeからテスト」と言ってみたところちゃんとツイートされていました。
google home から テスト
— mamori017 (@mamori017) 2017年12月5日
滑舌の問題が大きいと思うのですが、あまりに長い言葉だと誤認識される確率が高いのと、 IFTTTの設定で、発言後のGoogle Assistantからのレスポンスを日本語で記述するとツイートされない*2みたいです。
NULLは比較演算子では検索できない
NULLに対して検索を行いたい場合はIS (NOT) NULLを使用しなければいけません。 NULLは通常の値とは異なる*1ので、NULLに対して比較演算子("="や"<>")を使用しても結果に反映されません。
ColumnA | ColumnB |
---|---|
100 | 100 |
200 | NULL |
300 | 300 |
400 | 400 |
上記のテーブルに対して以下のクエリを実行した場合、2行目のレコードが該当するので検索結果は1件で返ってきます。
SELECT * FROM Table WHERE ColumnB IS NULL
しかし、NULLに対して比較演算子を使用した以下のクエリを実行した場合、2行目のレコードは出力されず検索結果は0件で返ってきます。
SELECT * FROM Table WHERE ColumnB = NULL
これはIN演算子なども同様で、NULLを検索対象に含んだとしても検索結果として返ってきません。 IN演算子でNULLを含めたい場合はNULLを除外した条件句にIS NULL条件を追記して対応する必要があります。
SELECT * FROM Table WHERE (ColumnB IN (100,400) OR ColumnB IS NULL)
SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2016/06/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2008/02/07
- メディア: 単行本(ソフトカバー)
- 購入: 54人 クリック: 1,004回
- この商品を含むブログ (78件) を見る
*1:SQL Server Management Studioの[テーブルを編集]で表示される斜体のNULLは文字列ではありません。
Amazon Athenaを使ってみる
Amazon S3に保管したログなどをSQLで解析できるというAmazon Athenaを触ってみました。 コマンドラインからだと結果が見づらいようなのでマネジメントコンソールから見てみます。
今回は事前に手持ちのIISログをS3バケットに放り込んでいます。 また、IISログについては値の区切りが半角スペースなので、Athenaで使いやすいようにタブ区切りに変更してあります。
データベースの設定
Athenaで使用するデータベースの設定を行います。データベース名とテーブル名、Athenaで参照するS3のバケットを指定します。Athenaで対象バケットを指定する際、S3のパスは「S3://{バケット名}/{フォルダ名}」になりますが、 パスの最後に必ず「/」を記述していないとエラーになるようです。
ファイル形式の指定
対象となるIISログはタブ区切りにしておいたのでTSV形式を選択しました。
カラムの設定
カラムのデータ型を指定します。 IISログで出力した項目別に列を設定しました。 キャプチャ上はString型になっていますが、 間違って2項目目にtimestamp型を指定してしまったため、 のちのクエリの実行結果でデータが出力されませんでした。
パーティション
パーティションの設定はスキップしました。 データ量が膨大になるとこの設定も必要になりそうです。
テーブル作成
テーブル作成クエリが表示されているのでRun Queryで実行します。 クエリの実行結果が正常であれば、 Athenaに指定したS3バケットのデータを対象としたテーブルが作成されます。 キャプチャはiisデータベースにw3svc1テーブルが作成された状態になります。
クエリの実行
試しにクエリを実行してみました。 ログ行は区切りごとに列として表現されていますが、不要なIISログヘッダまで対象データとして判定されているので、 対象ファイルをバケットに登録する以前に、不要な行はそもそもログとして出力しない方が良さそうです。 また、キャプチャの5レコード目以降がログの有効行になるのですが、time項目をtimestamp型にしてしまっているので型が合わず空欄で出力されています。
実行結果ログ
Athenaにデータベースを作成した時点で、S3にAthena実行結果用バケットが自動的に作成され、クエリの実行結果がCSV形式で保管されるようになります。 誤ってこのバケットを削除してしまった場合、コンソール上ではエラーが出力され続けるので、 削除してしまった場合は指定された名称でバケットを作成し直すか、保存先のバケットをコンソール右上のSettingsから指定する必要があります。
使ってみた感想・メモ
- 定期的に実行する必要のあるクエリはビューの感覚でSaved Queryで保存しておけるので便利。
- 列数が合わない行も左詰めで対象行となる。(IISログで言うとヘッダ行)
- 条件にヒットした行は出力対象となるが、列に指定したデータの型が合わない結果は空欄で表現される。
- 実行結果がS3の指定バケットに貯まり続ける。
- DDLリクエストは課金対象とならない。
- 列指定するとデータスキャン量が減るので1リクエストあたりの課金が抑えられる。
- 生のファイルサイズが大きい場合はデータを圧縮することで課金が抑えられる場合がある。
- 500KB弱のログファイルに対してクエリを実行し続けたけど、請求エクスプローラ上ではほぼ0円。
- 本来の使い方ではない気はするけど、今後はDB立てるまでもないデータをSQLで操作したいときに使っていきたい。
Amazon Web Services実践入門 (WEB+DB PRESS plus)
- 作者: 舘岡守,今井智明,永淵恭子,間瀬哲也,三浦悟,柳瀬任章
- 出版社/メーカー: 技術評論社
- 発売日: 2015/11/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
AWSエキスパート養成読本[Amazon Web Servicesに最適化されたアーキテクチャを手に入れる! ] (Software Design plus)
- 作者: 吉田真吾,今井智明,大瀧隆太,松井基勝,冨永善視,藤原吉規,大栗宗
- 出版社/メーカー: 技術評論社
- 発売日: 2016/02/26
- メディア: 大型本
- この商品を含むブログを見る