Google Fusion Tables API v1.0 Tips

※2013/5/3追記
その後気付いた点を追記、編集したTipsのRev2を作りました。
http://www.slideshare.net/awwa500/google-fusion-tables-api-v10-tips-rev2
どうせ見るならこっちの方がよさげです。

----
Google Fusion Tables API v1.0を使ってみました。そこそこTipsが溜まったのでブログにまとめようと思ったら、勢い余ってスライド作ってしまいました。
http://www.slideshare.net/awwa500/google-fusion-tables-api-v10-tips

発表する場の予定はありませんが、あったら是非ご紹介お願いします。ネタトーク的な感じでならやりたいです。


元々はAndroidアプリでSQLiteとFusion TablesのデータのSynchronizeの仕組みを作成する途中でできた成果物です。なので、Fusion TablesのStylesやらTemplatesやらの機能は含まれていません。そのうちまた踏み抜いたドブ板が溜まってきたらまとめるかもしれません。

コメント

  1. その後、気付いた点をばコメント。

    同じテーブルに大量なレコードのImport Rowsを連続的に投げると以下のエラーが返る。せつない。

    {
    "error": {
    "errors": [
    {
    "domain": "fusiontables",
    "reason": "cannotExecuteIncompatibleTask",
    "message": "Cannot execute ImportRows because another task of type ImportRows is still running."
    }
    ],
    "code": 417,
    "message": "Cannot execute ImportRows because another task of type ImportRows is still running."
    }
    }

    返信削除
  2. その後気づいた点をばコメント。

    Google提供のFTライブラリ、スッキリしているかと思いきや全然スッキリしていない。
    依存するライブラリ数が14個、合計3MB。
    個人的にはアウト。
    使いたい人は止めないけど。

    返信削除
  3. その後気づいた点をばコメント。

    Insert rowsでsql=パラメータをQueryStringにセットしなきゃいけなくてURL長の制限を受ける、という話は、実はContentTypeをapplication/x-www-form-urlencodedにしてやることでbodyのsql=パラメータが有効になる。
    ちなみに戻りはrowidのリストが返ってくるので、大量Insert時にrowIdを受け取れることになる。500レコードまでだったらこっちの方がパフォーマンスが良さそうだ。

    返信削除
  4. その後気づいた点をばコメント。

    Insert rows(POSTでbodyにsql=パラメータをセットする方法)でレコード数の挿入上限を確認した。
    17.8万レコードまでは登録できることを確認。
    方法としては、全レコード数25万を500レコードずつループでInsert rowsした。
    リクエスト前のスリープは100ms。
    リクエストのサイズによって影響をうけるのかはわからないが、とりあえず、実績としてはこんなところ。

    返信削除
  5. その後気づいた点をばコメント。

    ちなみに17.8万レコードを超えて挿入しようとすると503 BackendErrorが出る。
    その後、リクエストを投げると以下のエラーが返ってくる。
    「30秒後にリトライしてね!」って言ってるけど、実際には30秒経ってリトライしても状況は変わらない。

    Error 502 (Server Error)!!1
    502.That’s an error.
    The server encountered a temporary error and could not complete your request.
    Please try again in 30 seconds.
    That’s all we know.

    返信削除

コメントを投稿

このブログの人気の投稿

Joinノードを使う(その1)

Execノードを使う

Joinノードを使う(その4)