问题标签 [soda]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
metadata - Update Socrata dataset metadata through API
According to Socrata's "Publisher Guide":
The Publisher API allows you to programatically:
Add, update, and delete records within a Socrata dataset
Maintain dataset metadata and privacy settings
But I can't see anywhere in the API docs that explains how to do this. It's all about creating, updating or removing individual rows - nothing to do with dataset metadata.
For instance - how do you add a tag to an existing dataset, using the API?
r - 带有芝加哥数据的 RSocrata 包忽略了我的令牌
我无法通过使用颁发给我的应用程序的令牌(在我必须注册的 data.chicago.com 门户上)来限制我的下载
错误一:
2016-10-06 10:39:53.685 获取响应:
我不知道第一个“令牌”(2524 2524)是从哪里来的,你呢?有人可以告诉我吗?也许包的作者在这里?
非错误:
没有令牌(并且没有节流)效果很好!
而这个“开源” h___s://github.com/Chicago/RSocrata/blob/master/R/RSocrata.R 也没有回答这个问题。
socrata - 使用负数的查询未按预期工作
我正在尝试对此数据集编写查询:
https://data.sfgov.org/City-Infrastructure/Street-Tree-List/tkzw-k3nq
我想返回在某些值之间具有纬度和经度的记录。
我对查询字符串的尝试:
“ https://data.sfgov.org/resource/2zah-tuvt.json ?$limit=1000&$where=latitude 介于 37.709864 和 37.781918 之间,经度介于 -122.398942 和 -122.501212 之间”
该请求将响应限制为 1000 条记录,并搜索纬度在指定数字之间且经度在指定数字之间的记录。
该请求不会产生错误,但也不包含任何结果。有数以千计的记录应该满足参数,我不确定为什么我没有得到响应。
当我仅测试纬度值时,响应按预期返回。当我只测试经度值时,我没有得到任何回应。我已经测试了值 < 0 的经度(因为所有经度值都是负数)并且确实产生了正确的响应。
我有一种感觉,我试图搜索的负数导致了这个问题。有什么方法可以格式化负数,以便 SoQL 将它们视为搜索数字的一部分而不是运算符?我也尝试将负数括在括号中,但这没有帮助。
我需要更改什么才能获得响应以返回我想要的结果?
socrata - 自上次查询以来,如何获取 Socrata SODA 数据集中的最新行?
我正在使用 Splunk 分析 SFGov 开放数据 (data.sfgov.org),这是一个 Socrata 系统。
我能够下载 json 数据并离线分析内容。我现在正在实现数据集更新的自动索引(每天)。
我试图找出自上次民意调查以来实际使用哪些 Socrata API 字段来获取新记录。
我知道我可以使用 $where URL 选项再次过滤 :created_at 和 :updated_at 参数,但是是否有 rowID 或最后一个索引或类似的东西?我将在最后获取的行的 splunk 端维护本地状态,例如
就像我昨晚得到的最后一行是 18104 一样,那么对于 tonite 的检查,我会要求发布 > 18104 的行。
提前致谢!我正在使用 python 进行自动化。
------ 2016 年 11 月 2 日添加 ---
目前我正在手动测试尝试这种类型的 GET(使用 hurl.it 进行测试)
https://data.sfgov.org/resource/nwsr-z4mh.json ?$where=:created_at between '2016-10-23T18:00:00' 和 '2016-11-03T00:00:00'&$order =:created_at DESC&$select=:*, *
- 这使用了 Socrata 数据集中的 :created_at 系统字段。
- 它正在返回在这些时间戳之间创建的记录。这似乎奏效了。
因此,如果我要将其放入 python 中,我需要简单地保存以前的获取日期时间并在和之间执行一个“和”,并希望获得最新创建的记录。
我更喜欢引用 ROW# 的方式,但我还不知道如何使用 id":"row-8aiu.d5x4~8rdi" 参数。
r - 使用 API 端点和令牌时 read.socrata 出错
我正在用一些联邦数据测试 RSocrata。我按照github 文档使用 API 读取数据集。我不明白为什么read.socrata()
在我使用 url 时有效,但在我使用数据集提供的 API 端点时无效。
相反,我收到 rbind 错误,提示使用 API 端点密钥时列数不匹配。
authentication - 在 HTTP 基础中使用应用令牌和私有更新 Socrata 数据集
我正在尝试使用授权的应用程序编写脚本来更新各种数据集上的元数据。使用 OAuth 似乎是错误的方法(它不是一个面向 Web 的应用程序供其他用户自己使用),并且传递我自己的用户名和密码似乎......很恶心。
SODA API 身份验证文档非常混乱:
所有经过 HTTP 基本身份验证的请求都必须通过安全 (https) 连接执行,并且应该包含一个应用程序令牌,该令牌是在您注册应用程序时获得的。但是,身份验证 [原文如此,应该是“应用程序”?] 对请求进行身份验证时,令牌并不是严格要求的。通过不安全连接发出的经过身份验证的请求将被拒绝。
这是一个使用 HTTP 基本身份验证的示例 HTTP 会话:
所以:
- 你甚至可以使用应用令牌 + 秘密令牌来通过 HTTP 基础进行身份验证吗?
- 两个“[REDACTED]”中的哪一个是应用令牌,哪个是秘密令牌?
我的猜测(基于一些测试)是答案是:
- 不
- 第一个“[REDACTED]”是base64版本的username+password,第二个是application token,和认证无关。
authentication - 使用 Socrata API 实现 OAuth2
我正在实施Socrata API,以便能够解析来自芝加哥市开放数据集的公开可用数据。我真的只是关心数据本身,所以我最初并不认为我需要通过通过 ngrok 公开的应用程序来实现 OAuth2 才能获取数据。
我最初的尝试是接受他们文档中提到的 GET 请求,并尝试通过 Postman 获得响应。
以下是此类尝试的示例:
我还在查询字符串中添加了我的 Socrata App Token 作为参数,但显示了相同的消息。
所以我告诉自己,好吧,也许他们在不让客户端通过 OAuth2 的情况下弃用了 GET 请求。如果他们不弃用这些 GET 请求,我宁愿不必处理 OAuth2,但我开始实施身份验证过程,一切顺利,直到我得到以下说明:
除了“authorization_type”之外,我有每个需要包含在该 POST 请求中的值。这是从哪里来的?我尝试将“authorization_type”作为字符串保留,但收到的响应类似于此问题顶部图像中的“无效的用户名或密码”消息。
python - Socrata SODA API 拒绝最大重试次数
我正在使用 Splunk 中的 REST API 模块化输入通过 SODA API 获取 data.SFGov.org 数据。我有一个应用令牌。我反复获得 MAX RETRIES EXCEEDED。
背景:
我正在为 SF opendata 构建一个基于原始 Splunk 的流游标。我一直在使用配置屏幕本身的 REST API MODULAR INPUT 测试 GET,还没有编写任何 python 代码。这是错误。
2016 年 11 月 30 日 16:24:57.432 -0800 错误 ExecProcessor - 来自“python /Applications/Splunk/etc/apps/rest_ta/bin/rest.py”的消息执行请求异常:HTTPSConnectionPool(host='data.sfgov.org ',端口 = 443):最大重试次数超出 url:[已编辑](原因:[Errno 8] 节点名或提供的服务名,或未知)
我发现错误地将 REST API 模块的轮询间隔设置为 60 秒,这可能导致了问题?(我将其更改为 ONE DAY 以避免将来出现问题)。然后我得到了一个新的 APP TOKEN 并尝试了一个 GET。我在日志中看到了 get ,但是同样的 MAX RETRIES EXCEEDED 错误即将到来。我使用相同的 IP 地址。
我将在接下来的几周内进行测试。我该如何解决这个问题并再次优雅地避免这种情况?
@chrismetcalf - 只是标记你。