当我从Power Query中的Sql Server导入数据时,我可以粘贴一个要对数据库执行的查询.但是后来当我想在工作簿查询>编辑>高级编辑器中编辑此查询时,我得到这样的结果:
let
Source = Sql.Database("server", "database", [Query="select#(lf)#(tab)*#(lf)from dbo.SomeView va#(lf)join dbo.SomeTable rm#(lf)#(tab)on rm.CatId=va.CatId#(lf)where 1=1#(lf)#(tab)and Month between 1501 and 1510#(lf)#(tab)and rm.Id in (1,2,3)"])
in
Source
Run Code Online (Sandbox Code Playgroud)
请注意我正在使用*,但使用明确的列名称,这看起来会更糟.
我希望能够以可读的形式查看查询,然后复制它,在Management Studio中执行,更改内容并粘贴回Power Query.我知道我可以使用视图作为源,或者不使用换行符和缩进,但这不是我的观点.
有关如何以"正常"形式编辑SQL的任何想法?或者也许我错过了一些隐藏的选项.
编辑:如果我不是世界上唯一一个在找到这个选项时遇到问题的人,那就是:
Power Query> Launch Editor> View> Query Settings> Applied Steps> Source> Gear图标
谢谢亚历杭德罗!
该方案是Windows Server 2012 R2,64位; Excel 2010,32位.许多用户,只有其中几个拥有管理权限.我从内置管理员安装了Power Query.没有询问任何内容,为所有用户安装了加载项; 我的意思是它的设置可以在HKLM下的注册表项中找到,而不是HKCU.
关键是
HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Office -> Excel -> AddIns -> Microsoft.Mashup.Client.Excel
而相关的价值是
LoadBehavior (REG_DWORD)
现在只有少数用户真的需要Power Query.每次启动Excel时,我都不希望它为每个人加载.我为LoadBehavior值尝试了一些不同的设置(请参阅此链接).我找到了以下内容:
软件 - > Microsoft - > Office - > Excel - > Addins - > -Microsoft.Mashup.Client.Excel
这一切似乎都很好.现在问题是我需要从VBA过程调用一些Power Query操作.如果已加载Power Query,则一切正常.但如果未加载,即使使用"按需加载"设置,操作也会失败.为了加载Power Query,必须按下Excel GUI上的某个按钮,该按钮调用Power Query操作.
我发现VBA中有一个加载项对象的属性,它指示加载项是否已加载,并且可以设置为从VBA加载或卸载加载项.它是:
Application.COMAddIns.Item("Microsoft.Mashup.Client.Excel").Connect
如果是True,则加载加载项,如果加载,则加载加载False项.
现在应该可以通过将此属性设置为True来加载加载项.但是,在我的方案中情况并非如此:结果是错误(80004005).这似乎是与没有管理权限的用户相关的问题.查看此页面 - 此行为被视为错误.
我将在稍后尝试的最后一个想法是完全删除HKLM下的密钥中的LoadBehavior.我已经检查过这会阻止用户看到加载项,除非创建了特定于用户的密钥,在这种情况下,用户可以自动设置加载项加载行为.我将看到在这种情况下从VBA请求加载时会发生什么.
同时,我很感激任何想法来解决这个问题:Power …
作为数据源的Excel表可能包含错误值(#NA,#DIV/0),这可能会影响Power Query中转换过程中的某些步骤.
根据以下步骤,我们可能没有输出但是错误.那么如何处理这种情况呢?
我在Power Query中发现了两个标准步骤来捕获它们:
第一种可能性对我来说不是解决方案,因为我想保留行并只是替换错误值.
在我的情况下,我的数据表将随时间变化,意味着列名称可能会更改(例如年),或者出现新列.所以第二种可能性太静态了,因为我不想每次都改变脚本.
所以我试图通过动态方式清除所有列,独立于列名(和列数).它用空值替换错误.
let
Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
//Remove errors of all columns of the data source. ColumnName doesn't play any role
Cols = Table.ColumnNames(Source),
ColumnListWithParameter = Table.FromColumns({Cols, List.Repeat({""}, List.Count(Cols))}, {"ColName" as text, "ErrorHandling" as text}),
ParameterList = Table.ToRows(ColumnListWithParameter ),
ReplaceErrorSource = Table.ReplaceErrorValues(Source, ParameterList)
in
ReplaceErrorSource
Run Code Online (Sandbox Code Playgroud)
在我向源添加了两个新列(有错误)之后,这里有三个不同的查询消息:

如果有人有其他解决方案来进行此类数据清理,请在此处写下您的帖子.
我们正在尝试构建一个默认的Excel仪表板,我们的用户可以下载.下载Excel工作表时,我们希望使用其数据填充文件中的工作表.
我们使用EPPlus来处理Excel工作表.
简而言之,表的结构如下:
Sheet A 带有报告元素(数据透视表,数据透视图和切片器)Sheet B 其中包含整个数据集=OFFSET(Data!$A$1;0;0;COUNTA(Data!$A:$A);COUNTA(Data!$1:$1))它只是适应我们插入到该工作表中的数据集的大小Sheet A都配置为从数据模型加载数据总的来说,只要我们手动填充Sheet B数据,这就行得很好.当我们尝试使用EPPlus填充数据时,我们在尝试保存文件时出错:
The cachesource is not a worksheet
Run Code Online (Sandbox Code Playgroud)
通过反复试验,我们剥去了它的部件,以找出问题的原因.我们怀疑它可能是切片器,Power Query/Data Model的使用或命名范围的技巧.但是,这些都不是问题 - 如果我们从工作表中删除所有数据透视表,那么我们就可以保存工作簿了.令我惊讶的是,我们能够很好地使用数据透视图,它只是引起问题的表格.
有关如何使用EPPlus避免此问题的任何建议?现在,我们继续不使用数据透视表,我们希望让他们在某些时候返回:)
建立:
问题描述
使用任何技术的任意组合后,等待Power Query完成刷新,如下面所示的"我尝试过的东西:"部分所述.根据"查询和连接"窗格中显示的刷新指示器(微调器?)图标,可以在Power Query表完成更新之前显示消息框并执行任何其他代码.
上述语句的例外是Application类的"OnTime"方法,如下面的"代码"部分所示,它似乎不会中断电源查询刷新的轮询.但是,此方法的问题在于它使用硬编码的时间来暂停VBA代码,并且这并不总是有效,因为查询的数据的大小,数量和持续时间将随时间而变化.
我尝试过的事情:
码:
Private Sub sht_sub_Refresh_AllConnections_dev()
'Name: sht_sub_Refresh_AllConnections_dev
'Purpose: An attempt at using VBA to wait for Queries to finish updating before displaying a message.
'Description: Waits for a hard coded period of time before dislpaying the message box.
'State: WIP.
'Dev: Needs a way to look at …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Power Query 下载我使用 .net Web Api 2 和 OData v4 nuget 包创建的 Odata 源。
我正在尝试访问需要身份验证的 Odata 提要。当我在电源查询中编辑身份验证类型时,我从未在请求中看到身份验证密钥。
如何配置 Power Query 以使用特定类型的身份验证?
奖励:我正在使用 OAuth,那么我将如何配置电源查询以发送包含“Authorization Bearer:token_here”的带有身份验证数据的标头
一如既往,命名事情很难.
Power Query Formula Language 长
M 是短
有一个很好的中间地带还是我们坚持'M'?
例如,在创建诸如Sublime Text中的语法高亮显示包之类的内容时可能存在冲突m.tmTheme.在v1更改名称的人的示例.或者我们是否满意powerqueryformulalanguage.thTheme.
我知道这个问题可能会被标记为主观,但严重的是,它是早期的,所以希望很快它就是一个简单的答案.
BTW我会用这个问题做什么标签?:/
m - M Modeling Language是Microsoft"Oslo"项目的一个组件,后来称为SQL Server Modeling CTP.该项目于2010年底取消.
powerqueryformulalanguage - 不存在...
如果字符串"This is a test string"包含任何字符串列表项,我想检查powerquery新列{"dog","string","bark"}.
我已经尝试过Text.PositionOfAny("This is a test string",{"dog","string","bark"}),但该函数只接受单字符值
Expression.Error: The value isn't a single-character string.
Run Code Online (Sandbox Code Playgroud)
对此有何解决方案?
在Power Query中,当我右键单击查询的名称时(在Power Query窗口的最左侧窗格中),我看到"启用加载"和"包含在报表刷新中"的选项.
我无法找到这两个选择实际意义和做法的解释.我非常感谢一个简短的教程.
我在Power Query中使用R脚本进行一些数据转换并返回一个缩放表。我的R代码是这样的:
# 'dataset' contém os dados de entrada neste script
library(dplyr)
df_normal <- log(dataset+1) %>%
select(c(2:4)) %>%
scale
df_normal <-cbind(dataset[,c(1)], df_normal)
output <- df_normal
Run Code Online (Sandbox Code Playgroud)
这在R Studio中可以正常工作,并且按预期方式获得了df_normal数据框。
但是,在Power Query中,我得到了一个空表!
如何将数据框导出到表?
powerquery ×10
excel ×4
powerbi ×4
vba ×2
.net ×1
c# ×1
doevents ×1
epplus ×1
excel-2010 ×1
excel-addins ×1
m ×1
oauth ×1
odata ×1
r ×1
refresh ×1