所以我在尝试使用 Power BI 中的刷新计划菜单时遇到问题。问题是数据集包含动态数据源。由于动态数据源不会在 Power BI 服务中刷新,因此不会刷新此数据集。了解更多:https://aka.ms/dynamic-data-sources。
我尝试使用分页 API 收集数据集。但是,我认为因为这个过程可能是动态的,所以 Power BI 服务无法进行计划刷新。如何解决这个问题?预先感谢。
let
Source = Json.Document(Web.Contents("https://semenbeku.rcve.in/api/semen-beku-produksis?pagination[page]=1")),
metadata = Source[meta],
pagination = metadata[pagination],
totalpages = pagination[pageCount],
List = {1..totalpages},
#"Converted to Table" = Table.FromList(List, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table", {{"Column1", type text}}),
#"Get Page" = Table.AddColumn(#"Changed Type", "Data", each
let
page = [Column1],
Source = Json.Document(Web.Contents("https://semenbeku.rcve.in/api/semen-beku-produksis?pagination[page]=" & page)),
data = Source[data],
#"Converted to Table" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"attributes"}),
#"Expanded attributes" = Table.ExpandRecordColumn(#"Expanded Column1", "attributes", {"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"},
{"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"})
in
#"Expanded attributes"
),
#"Expanded Data" = Table.ExpandTableColumn(#"Get Page", "Data", {"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"}, {"Data.eartag", "Data.tgl", "Data.kode_straw", "Data.jenis", "Data.rumpun", "Data.sexing", "Data.jumlah", "Data.createdAt", "Data.updatedAt", "Data.publishedAt"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded Data", {{"Data.createdAt", type datetime}, {"Data.updatedAt", type datetime}, {"Data.publishedAt", type datetime}})
in
#"Changed Type1"
如果您在 Power Query 中使用
Web.Contents
函数并使用动态端点,而不是像应有的那样使用 Web.Contents
,则这是一个常见错误!
这是一个固定的代码片段:
let
Source = Json.Document(Web.Contents("https://semenbeku.rcve.in/api/semen-beku-produksis?pagination[page]=1")),
metadata = Source[meta],
pagination = metadata[pagination],
totalpages = pagination[pageCount],
List = {1..totalpages},
#"Converted to Table" = Table.FromList(List, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table", {{"Column1", type text}}),
#"Get Page" = Table.AddColumn(#"Changed Type", "Data", each
let
page = [Column1],
Source = Json.Document(Web.Contents("https://semenbeku.rcve.in/api/semen-beku-produksis,[Query = ["pagination[page]"= page]])),
data = Source[data],
#"Converted to Table" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"attributes"}),
#"Expanded attributes" = Table.ExpandRecordColumn(#"Expanded Column1", "attributes", {"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"},
{"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"})
in
#"Expanded attributes"
),
#"Expanded Data" = Table.ExpandTableColumn(#"Get Page", "Data", {"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"}, {"Data.eartag", "Data.tgl", "Data.kode_straw", "Data.jenis", "Data.rumpun", "Data.sexing", "Data.jumlah", "Data.createdAt", "Data.updatedAt", "Data.publishedAt"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded Data", {{"Data.createdAt", type datetime}, {"Data.updatedAt", type datetime}, {"Data.publishedAt", type datetime}})
in
#"Changed Type1"
请注意,我不知道包含括号的查询参数的语义,但这就是您构建它的方式。关键是
Web.Contents
函数采用可选的 options
记录,可以携带这些额外的“动态”组件,而请求 URL 本身在表达式中保持静态。
在此处查看更多信息:https://learn.microsoft.com/en-us/powerquery-m/web-contents
编辑:您也许也可以使用
RelativePath
而不是 Query
:
let
Source = Json.Document(Web.Contents("https://semenbeku.rcve.in/api/semen-beku-produksis?pagination[page]=1")),
metadata = Source[meta],
pagination = metadata[pagination],
totalpages = pagination[pageCount],
List = {1..totalpages},
#"Converted to Table" = Table.FromList(List, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table", {{"Column1", type text}}),
#"Get Page" = Table.AddColumn(#"Changed Type", "Data", each
let
page = [Column1],
Source = Json.Document(Web.Contents("https://semenbeku.rcve.in/api/semen-beku-produksis,[RelativePath = "?pagination[page]=" & page]])),
data = Source[data],
#"Converted to Table" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"attributes"}),
#"Expanded attributes" = Table.ExpandRecordColumn(#"Expanded Column1", "attributes", {"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"},
{"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"})
in
#"Expanded attributes"
),
#"Expanded Data" = Table.ExpandTableColumn(#"Get Page", "Data", {"eartag", "tgl", "kode_straw", "jenis", "rumpun", "sexing", "jumlah", "createdAt", "updatedAt", "publishedAt"}, {"Data.eartag", "Data.tgl", "Data.kode_straw", "Data.jenis", "Data.rumpun", "Data.sexing", "Data.jumlah", "Data.createdAt", "Data.updatedAt", "Data.publishedAt"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded Data", {{"Data.createdAt", type datetime}, {"Data.updatedAt", type datetime}, {"Data.publishedAt", type datetime}})
in
#"Changed Type1"