我正在寻找一个从SQL Server获取数据并将其实时推送到PowerBI的示例代码,这基本上是使用Push Dataset选项。 我不知道如何从SQL推送数据
由于
答案 0 :(得分:1)
答案 1 :(得分:0)
您无法从SQL“推送”数据,但您可以使用DirectQuery而不是Import。那么您的数据将始终是实际的。
只需连接到SQL Server,然后选择“直接查询”,您就可以开始了。
编辑: 当然,使用@Alexander Volok,通过应用程序和/或API调用,您可以将数据推送到Power BI中。我的坏。
答案 2 :(得分:0)
为什么不创建自定义流数据集并直接“推送” SQL数据。在这种情况下,您可以使用Power应用程序(在插入时创建流和触发器),也可以简单地对一些代码以发布请求的形式推送数据。
例如,您的sql表包含要推送的值。因此,步骤应如下:
创建仪表板
添加图块
选择“自定义流数据集”作为源
定义要推送的数据列(例如train_number和department_time)
这是python中的示例代码:
def data_generation(counter=None):
# get your SQL data and save it into 2 variables (row by row)
return [train_number, departure_time]
while True:
data_raw = []
# simple counter increment
counter += 1
for i in range(1):
row = data_generation(counter)
data_raw.append(row)
# set the header record
HEADER = ["train_number", "departure_time"]
# generate a temp data frame to convert it to json
data_df = pd.DataFrame(data_raw, columns=HEADER)
# prepare date for post request (to be sent to Power BI)
data_json = bytes(data_df.to_json(orient='records'), encoding='utf-8')
# Post the data on the Power BI API
req = requests.post(PowerBI_REST_API_URL, data_json)
print("Data posted in Power BI API")
print(data_json)
# wait 5 seconds
time.sleep(5)
答案 3 :(得分:0)
您可以使用Power Shell推送数据,在其中您需要添加api链接,并且必须放置sql连接字符串,然后您就可以通过将其声明为代码来对同一数据集进行查询,请参考下面的代码,该代码将帮助您了解如何在运行Power Shell脚本后将数据推送到数据集中,然后将数据推送到Power Bi数据集,然后您就可以看到自己的动态
$SqlServer = ''; #your server name
$SqlDatabase = ''; #your database name
$uid ="" #User id
$pwd = "*****" # your password
$SqlConnectionString = 'Data Source={0};Initial Catalog={1};Integrated Security=SSPI;uid=$uid;Password=$pwd' -f $SqlServer, $SqlDatabase;
$SqlQuery = "SELECT * FROM abc;";
$SqlCommand = New-Object System.Data.SqlClient.SqlCommand;
$SqlCommand.CommandText = $SqlQuery;
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection -ArgumentList $SqlConnectionString;
$SqlCommand.Connection = $SqlConnection;
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCommand
$SqlConnection.Open();
$SqlDataReader = $SqlCommand.ExecuteReader();
##you would find your own endpoint in the Power BI service
$endpoint = "" ## add your api link middle of endpoint ""
#Fetch data from your table and write out to files
while ($SqlDataReader.Read()) {
$payload =
@{
"Date" =$SqlDataReader['Date']
"First Name" =$SqlDataReader['Name']
"Production" =$SqlDataReader['prdt']
}
Invoke-RestMethod -Method Post -Uri "$endpoint" -Body (ConvertTo-Json @($payload))
}
$SqlConnection.Close();
$SqlConnection.Dispose();
## every time you run script data will automaticaly pushed from sql server to your power bi report
e流图表