Excel Power Query - 来自具有动态工作表单元格值的Web

时间:2017-01-18 16:46:12

标签: excel powerquery

我们有一个每月更新的电子表格,用于查询来自我们服务器的一些数据。

查询网址如下所示:

http://example.com/?2016-01-31

返回的数据采用json格式,如下所示:

{"CID":"1160","date":"2016-01-31","rate":{"USD":1.22}}

我们只需要上面的1.22值,我就可以将其插入到工作表中而没有任何问题。

我的问题: 1.如何使用单元格值[包含日期]在查询中传递日期参数[2016-01-31],并在其旁边的单元格中显示结果。 2.列中有很长的日期列表,每个日期可以自动填写此查询吗? 3.当我将查询结果加载到工作表时,它总是成对加载。 [占用两个单元格,一个说"值"另一个包含值" 1.22"在我的情况下]。理想情况下,我只需要" 1.22"而不是标题,这可以删除吗? [Del赢得了工作,会给你一个"第1列和第34列;相反,或者你必须隐藏整行,这将弄乱布局]。

我知道这有很多要问,但我在最近几天尝试了大量的搜索和阅读,我不得不说M语言打败了我。

提前致谢。

2 个答案:

答案 0 :(得分:1)

  1. 将Web.Contents()请求转换为函数:

    let
      myFunct = ( param as date ) => let
       x = Web.Contents(.... & Date.ToText(date) & ....)
      in
       x
     in
      myFunct
    
  2. 从新查询中引用您的数据请求函数,包括您需要的任何转换(在本例中为JSON.Document,表扩展,删除无关数据。请在此处删除所有额外数据,包括仅包含的列包含标签'value'。

  3. (假设您的域名表已经存在)添加一个自定义列,如

    =Expand(myFunct( [someparameter] ))
    
  4. 编辑:回到家,进入我的书签。以下是您要查看的内容的更详细参考:http://datachix.com/2014/05/22/power-query-functions-some-scenarios/

答案 1 :(得分:0)

对于表 - 添加获取数据的列并解析JSON

let
    tt=#table(
        {"date"},{
        {"2017-01-01"},
        {"2017-01-02"},
        {"2017-01-03"}
    }),
    add_col = Table.AddColumn(tt, "USD", each Json.Document(Web.Contents("http://example.com/?date="&[date]))[rate][USD])
in
    add_col

如果您只需要一个值

Json.Document(Web.Contents("http://example.com/?date="&YOUR_DATE_STRING))[rate][USD]