首页 > 解决方案 > 如何在 symfony4 中集成 PowerBI

问题描述

我想在我的项目 symfony 4 中集成一个高级统计信息,所以我决定使用 PowerBI(如果你有其他选择,请告诉我),

我的问题是如何将它集成到我的本地项目 symfony4 中并与我的数据库 MySQL 相关

标签: symfonystatisticspowerbisymfony4

解决方案


到目前为止,还没有用于 power bi 的 Symfony 捆绑包,但您可以使用:adevait/power-bi

如果您没有找到您正在寻找的选项,您可以使用本机power bi rest api

您需要创建一个帐户并通过创建数据集等来管理它......

要求 :

  • GuzzleHttp

这里的重点是创建一个管理调用 api 的服务:

身份验证示例:

try {
    /** @var GuzzleHttp\Client $client **/
    $response = $client->post(
        'https://login.windows.net/<tenant-id>/oauth2/token',
        [
            "headers" => [
                "Accept" => "application/json"
            ],
            'form_params' => [
                'resource'      => 'https://analysis.windows.net/powerbi/api',
                'client_id'     => $this->clientId,
                'client_secret' => $this->secret,
                'grant_type'    => 'password',
                'username'      => $this->username,
                'password'      => $this->password,
                'scope'         => 'openid',
            ]
        ]
    );

    $body = json_decode($response->getBody()->getContents(), true);
    return $body['access_token'];
} catch (ClientException $e) {
    return ['error' => $e->getMessage()];
}

此时,您需要令牌来调用其他端点,因此您需要将返回的令牌注入您发送的任何请求的标头中,例如:

try {
    /** @var GuzzleHttp\Client $client **/
    $client->post(
        https://api.powerbi.com/v1.0/myorg/groups/<group-id>/datasets/<dataset-id>/tables/<table-name>/rows,
        [
            'headers' => [
                "Accept"        => "application/json",
                "Authorization" => sprintf("Bearer %s", $token),
            ],
            'json'    => $data
        ]
    );

    return true;
} catch (ClientException $e) {
    return false;
}

希望对你有所帮助。


推荐阅读