使用动态标识符调用 table
Call a table using a dynamic identifier
我正在尝试在 Power Query M 中动态调用 table。我在下面创建了一个简单的查询来解释我要做什么。
我希望结果是 "It Worked" 而不是我目前得到的 "Source1"。
let
Source1 = Table.FromList(
{
[Word1="It",Word2="Worked"]
},
Record.FieldValues,
{"Word1","Word2"}
),
Source2 = "Source" & "1"
in
Source2
用例详细信息:
我正在尝试这样做,以便我可以根据条件调用查询。如:
if ENV = "production" then
Customer_s
else
Customer_m
其中 Customer_s
是检索在 CSV 文件中找到的客户数据的查询,Customer_m
是检索在 SQL 服务器上找到的客户数据的查询。
因为我将对许多 table 进行此操作(不仅仅是客户),所以我想我会创建一个函数,您可以在其中传递模型名称(即 "Customer"),然后它然后将其串在一起以调用查询。
我只是发现 PowerBI 逐渐停止并不断不必要地重新运行查询,这会降低我的 PC 和网络速度。我认为解决此问题的一种简单方法是创建看起来像 SQL 服务器结果但存储在本地计算机上的虚拟数据。这样,如果我无法访问互联网,我也可以编写查询。
#shared 包含所有可用查询和库函数的列表,因此您可以执行以下操作:
Record.Field(#shared, "It " & "Worked")
如果你使用这个:
= Expression.Evaluate("Source"&"1", #shared)
您可以动态引用其他查询。但不是同一查询中的其他步骤(看起来)。所以它必须坐在一个新的查询中。
或者您的问题是:
Text.Combine({"It", "Worked"}, " ")
?
感谢@ImkeF 提供的信息,我完成了这项工作。
我首先不得不拆分两个查询,以便使用完整的 let
in
表达式对 Source1 进行评估,然后可以通过 #shared
.
访问
查询 1
let
Source1 = Table.FromList(
{
[Word1="It",Word2="Worked"]
},
Record.FieldValues,
{"Word1","Word2"}
)
in
Source1
查询 2
let
Source2 = Expression.Evaluate("Source"&"1", #shared)
in
Source2
这有 QUERY 2 结果:
╔═══════╦════════╗
║ Word1 ║ Word2 ║
╠═══════╬════════╣
║ It ║ Worked ║
╚═══════╩════════╝
感谢@ImkeF 和@Alejandro 的帮助。
我正在尝试在 Power Query M 中动态调用 table。我在下面创建了一个简单的查询来解释我要做什么。
我希望结果是 "It Worked" 而不是我目前得到的 "Source1"。
let
Source1 = Table.FromList(
{
[Word1="It",Word2="Worked"]
},
Record.FieldValues,
{"Word1","Word2"}
),
Source2 = "Source" & "1"
in
Source2
用例详细信息:
我正在尝试这样做,以便我可以根据条件调用查询。如:
if ENV = "production" then
Customer_s
else
Customer_m
其中 Customer_s
是检索在 CSV 文件中找到的客户数据的查询,Customer_m
是检索在 SQL 服务器上找到的客户数据的查询。
因为我将对许多 table 进行此操作(不仅仅是客户),所以我想我会创建一个函数,您可以在其中传递模型名称(即 "Customer"),然后它然后将其串在一起以调用查询。
我只是发现 PowerBI 逐渐停止并不断不必要地重新运行查询,这会降低我的 PC 和网络速度。我认为解决此问题的一种简单方法是创建看起来像 SQL 服务器结果但存储在本地计算机上的虚拟数据。这样,如果我无法访问互联网,我也可以编写查询。
#shared 包含所有可用查询和库函数的列表,因此您可以执行以下操作:
Record.Field(#shared, "It " & "Worked")
如果你使用这个:
= Expression.Evaluate("Source"&"1", #shared)
您可以动态引用其他查询。但不是同一查询中的其他步骤(看起来)。所以它必须坐在一个新的查询中。
或者您的问题是:
Text.Combine({"It", "Worked"}, " ")
?
感谢@ImkeF 提供的信息,我完成了这项工作。
我首先不得不拆分两个查询,以便使用完整的 let
in
表达式对 Source1 进行评估,然后可以通过 #shared
.
查询 1
let
Source1 = Table.FromList(
{
[Word1="It",Word2="Worked"]
},
Record.FieldValues,
{"Word1","Word2"}
)
in
Source1
查询 2
let
Source2 = Expression.Evaluate("Source"&"1", #shared)
in
Source2
这有 QUERY 2 结果:
╔═══════╦════════╗
║ Word1 ║ Word2 ║
╠═══════╬════════╣
║ It ║ Worked ║
╚═══════╩════════╝
感谢@ImkeF 和@Alejandro 的帮助。