YQL Open Data Table Reference Sample メモ その1

YQLは便利だ。データ整形はこれが一番速い。自分でもTableを作れるようになればもっと快適なpipesライフが送れるはず。Referenceを眺めつつ理解を深めるのも良いけど、やっぱりSampleを眺めるのが一番手っ取り早い。と言う訳でReferenceのSampleから分かる事をメモ。

Spotify Artist Search。execute要素のない基本的な形。

<?xml version="1.0" encoding="UTF-8"?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
  <meta>
    <sampleQuery>SELECT * FROM {table} where artist = 'The New Pornographers';</sampleQuery>
    <author>Max Manders</author>
    <documentationURL>http://developer.spotify.com/en/metadata-api/overview/</documentationURL>
    <description>A YQL wrapper around the Spotify Metadata API.</description>
  </meta>
  <bindings>
    <select itemPath="artists.artist" produces="XML">
      <urls>
        <url>http://ws.spotify.com/search/1/artist?q={artist}</url>
      </urls>
      <inputs>
        <key id="artist" type="xs:string" paramType="path" />
      </inputs>
    </select>
    <select itemPath="json.artists.artist" produces="JSON">
      <urls>
        <url>http://ws.spotify.com/search/1/artist.json?q={artist}</url>
      </urls>
      <inputs>
        <key id="artist" type="xs:string" paramType="path" />
      </inputs>
    </select>
  </bindings>
</table>

table

xmlns属性(名前空間)はつけておかないと実行時に怒られる。どっかから雛形をコピペしてきた時は忘れずに。

meta

特筆する事は何もない。強いて言えばsampleQuery要素の{table}くらいか。これには実行時にtable名が自動で入る。

select

select文を定義する。Referenceにはinsert、update、deleteもあるんだけどYQLからdata table自体を操作する事が果たしてあるんだろうか。

produces

YQLがweb serviceから受け取るデータ形式XML or JSONの何れかを指定。

itemPath

返すdataに対して指定する。上記の例で言うと

<artists>
  <artist>
    <name></name>
  </artist>
</artists>

というselect文の実行結果が返ってくる場合、itemPath="artists.artist"を指定すると実行結果は

<name></name>

となる。

url

特筆する事は何もなし。{artist}はkey要素で述べる。

key

tableで使用するパラメーターを指定。URL要素で{artist}という使い方をする。

paramType

query、path、header、variableの4つの値を取り得る。headerは文字通りHTTP headerの事。しかしparamType=headerを指定したsampleがない。まあheaderのfield-nameとfield-valueをセットで指定する事は少ない気もする。variableを指定した場合execute要素内で変数として使う。queryとpathの違いはselect文でwhere artist="hoge"と指定した場合、URL要素では下記の様に展開される。

paramType 戻り値
query artist=hoge
path hoge