我有以下问题。我正在使用"Get Data from Analysis Services“从多维数据集获取数据(Excel 365 - Power Query)。每周筛选年份的->销售数量值。
如果我使用过滤器,一切都很好,更新时间大约为3-4秒:
#"Filtered Rows1" = Table.SelectRows(#"Added Items", each
(Cube.AttributeMemberId([#"Date.Year (4-4-5)"]) = "[Date].[Year 4-4-5].&["&
Number.ToText(2019) &"]" meta
[DisplayName = Number.ToText(2019)]
or Cube.AttributeMemberId([#"Date.Year (4-4-5)"]) = "[Date].[Year 4-4-5].&["&
Number.ToText(2020) &"]" meta
[DisplayName = Number.ToText(2020)]
)现在我喜欢动态地做,这样我就可以在excel中从一个单元格中获得年份。为此,我使用了下面的M函数"fktGetNamedCellValue“:
let
Source = (FieldInput as text) =>
let Quelle = Excel.CurrentWorkbook(){[Name=FieldInput]}[Content],
Inhalt = Number.From(Quelle{0}[Column1])
in Inhalt
in Source我用函数替换了Filter-Step中的年份。单元格被命名为"cell_Prev_Year“和"cell_Plan_Year”这两个单元格在Excel中被格式化为数字(其中只有数字),现在->更新时间是无限的!
#"Filtered Rows1" = Table.SelectRows(#"Added Items", each
(Cube.AttributeMemberId([#"Date.Year (4-4-5)"]) = "[Date].[Year 4-4-5].&["&
Number.ToText(fktGetNamedCellValue("cell_Prev_Year") &"]" meta
[DisplayName = Number.ToText(fktGetNamedCellValue("cell_Prev_Year"))]
or Cube.AttributeMemberId([#"Date.Year (4-4-5)"]) = "[Date].[Year 4-4-5].&["&
Number.ToText(fktGetNamedCellValue("cell_Plan_Year")) &"]" meta
[DisplayName = Number.ToText(fktGetNamedCellValue("cell_Plan_Year"))]
)如果我使用值为"2019“或"2020”的“正常”参数,则一切正常。只有当我使用fktGetNamedCellValue时,它才不会正确运行。
我已经把结果修剪干净了。将其格式化为文本和数字...什么都没有用。
我必须使用用户友好的参数(没有在Power Query中设置),所以我希望能得到一些帮助:)
向Chris致以最良好的问候
(PS:我希望你能听懂我的英语)
发布于 2020-05-20 21:02:47
我按如下方式解决了这个问题。
因为使用用户函数作为参数从多维数据集中获取数据并不是一个好主意。我认为这个方法禁用了查询折叠,或者在这个过程中被调用了很多次,所以我决定使用一个power-query参数。
我使用vba通过检查worksheet_change事件并调用该子对象来更改此参数:
Sub refresh_Parameter(ParameterName As String, ParameterValue As Variant)
Dim strOldFormula As String
Dim strParametersMeta As String
strOldFormula = ThisWorkbook.Queries(ParameterName).Formula
strParametersMeta = Mid(strOldFormula, InStr(1, strOldFormula, "meta"), Len(strOldFormula))
ThisWorkbook.Queries(ParameterName).Formula = ParameterValue & " " & strParametersMeta
Debug.Print strOldFormula
Debug.Print strParametersMeta
End Sub该子模块的参数包括PowerQuery中的参数名称和应设置的值。为此,sub从查询公式中提取元数据,并将其与新值组合。
也许有人需要这个:)
向chris致以最良好的问候
https://stackoverflow.com/questions/61674967
复制相似问题