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
発表する場の予定はありませんが、あったら是非ご紹介お願いします。ネタトーク的な感じでならやりたいです。
その後気付いた点を追記、編集した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やらの機能は含まれていません。そのうちまた踏み抜いたドブ板が溜まってきたらまとめるかもしれません。
その後、気付いた点をばコメント。
返信削除同じテーブルに大量なレコードの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."
}
}
その後気づいた点をばコメント。
返信削除Google提供のFTライブラリ、スッキリしているかと思いきや全然スッキリしていない。
依存するライブラリ数が14個、合計3MB。
個人的にはアウト。
使いたい人は止めないけど。
その後気づいた点をばコメント。
返信削除Insert rowsでsql=パラメータをQueryStringにセットしなきゃいけなくてURL長の制限を受ける、という話は、実はContentTypeをapplication/x-www-form-urlencodedにしてやることでbodyのsql=パラメータが有効になる。
ちなみに戻りはrowidのリストが返ってくるので、大量Insert時にrowIdを受け取れることになる。500レコードまでだったらこっちの方がパフォーマンスが良さそうだ。
その後気づいた点をばコメント。
返信削除Insert rows(POSTでbodyにsql=パラメータをセットする方法)でレコード数の挿入上限を確認した。
17.8万レコードまでは登録できることを確認。
方法としては、全レコード数25万を500レコードずつループでInsert rowsした。
リクエスト前のスリープは100ms。
リクエストのサイズによって影響をうけるのかはわからないが、とりあえず、実績としてはこんなところ。
その後気づいた点をばコメント。
返信削除ちなみに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.