第45話 QUERY関数の構文とユーザー

 その後もGoogle Visualization APIの構文について解説を受け、その後はひたすらイノウエが出す問題を解かされた。丸一日の座学は正直きつかったが、pivotやoffset、formatなどそこまで使われなさそうなものも含めてだいたい理解することができた。


「これでQUERY関数は大丈夫そうでしょうか」


 もう時間的にもそろそろ終わりかなと思い、区切りの良いところでおれは聞いた。


「あ、すいません!肝心のQUERY関数自体の構文をわすれていました!!」


 たしかにそうだった。イノウエはいそいそとホワイトボードに構文を書き始める。


=QUERY(データ, クエリ, [見出し])


「具体例としてはこんな感じです」


=QUERY(A1:C4, "select B, count(A), avg(C) group by B", 1)


「データはクエリで参照したいセル範囲です。ここはそんなに問題ないのですが、注意したいのはA:Cみたいな形で列全体を指定したときですね。気づきにくいのですが画面内にある空白行全部もデータベースとして認識されてしまいます」


「そんなに困らなそうな気がしますけど、何か注意するありますか?」


 名前 性別 年齢

---------- --- -----

タカハシ 男 27

サイトウ 男 43

イノウエ 女 17


「このデータがシートのA1:C4にあって、5行目以降は空白行がいっぱいあるとするじゃないですか。そこにこういうのを書くと」


select * order by 名前


「上からイノウエ、サイトウ、タカハシの順で並んでいてほしいんですが、実際にはこうなります」


 名前 性別 年齢

---------- --- -----









 (長い空白)








イノウエ 女 17

サイトウ 男 43

タカハシ 男 27



「A:Cみたいな形で指定してもいいのですが、そういうときはwhereを使って空白行を除外しておくのがポイントです」


select * where 名前 <> '' order by 名前


「なるほど、よくわかりました。ちなみに上の例だと名前や性別じゃなくてA、Bみたいな列のアルファベットが書いてありますが、これはカラム名でもアルファベットでもどっちでもいいんですか?」


「すいません、名前って書いていたのは説明のためで、実際には列名を書いてやる必要があります」


「なるほど、名前付き範囲とかも書けないですよね」


「クエリ内は文字列扱いなので名前付き範囲は無理ですね。この点は仕方ないのです」


「ちょっと微妙ですね。列が追加削除でずれたときもダメだし、個人的には使いにくい気がします」


「あ!実は列ずれは大丈夫なんですよ」


「範囲指定と一緒で数式内の列も勝手にずれてくれるんですか?」


「いえ、ちょっと不思議なんですが、列がずれてもわたしたちがすでに処理した結果は維持されるんです。書いたクエリ自体は変化がないです。同じクエリを新しく別のセルに書いたらうまく動いてくれません」


 不思議だ。そんなことあるのか。しかし動いたとしてもちょっと気持ち悪さは残る。イノウエは残っている見出しオプションについて解説を始めた。


「最後の[見出し]のことはたぶんそんなに疑問はないとは思うのですが、データの上から何行が見出しになっているかですね。普通は1行で、指定しなかったり-1と書くと自動で判定します。経験でいえば見出しは1行がほとんど。もしくは指定されていないことが多いですね。だいたい説明は以上です。わかりました?」


「はい。大丈夫です。でも正直にいうと結構微妙な関数だと思いました。名前付き範囲も使えなくて可読性も悪いし、クエリもおぼえないといけないし。SUMIFSとかで1セルずつ埋めるか、ピボットテーブル使った方がよくないですか?」


 賛同を得られるかと思っていたが、イノウエは思いのほか厳しいことを言った。


「タカハシさん、使いやすさっていうのは人によって違うんですよ。タカハシさんはわたしたちのユーザーさんがみんな自分と同じような人だと思っていませんか?もともとExcelユーザーで、資格とったり勉強して、それから会社の業務で使ってる。そんな人ばっかりだって決めつけていませんか?」


「へ?」


「もちろんそういう人は多いですよ。でもそういう人ばっかりじゃないんです。わたしたちのことはGoogleアカウントさえあれば誰でも使えるからいろんな人がいろんな使い方をしているんです。家計簿つけるのに使っている人もいるし、自分の見た映画の記録に使っている人だっている。Excelからうつってきた人だけじゃないし、パソコンにExcelが入ってない人だってたくさんいるんです」


「たしかにそうかもしれませんけど…」


「もっと具体的に言うと、SUMIFSもピボットテーブルも触ったこともないけど、QUERY関数はバリバリ使いこなす人がいることを想像できますか?サイトウさんがわたしたちのチームはこれからエンジニアのSpreadsheetsを担当するって言ってましたけど、そういう人って多いですよ。だってQUERY関数はすぐ使えしクエリさえ書けばいろんなことが一つの関数でできちゃうから。タカハシさんと違って、SQLはもともと知ってるんです。名前付き範囲は知らなくてもSQLは知ってるんです」


 ぐうの音もでない。その通りだ。おれは完全に論破された。


 イノウエは研修室を去り際に言った。


「もっとユーザーさんのことを理解してください。じゃないと死にますよ?」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます