# Integración de Discourse Data Explorer con Power BI

**URL:** <https://meta.discourse.org/t/discourse-data-explorer-power-bi-integration/159577>\
**Category:** Administrators\
**Tags:** tutorial, platforms\
**Created:** [2 Agosto, 2020 12:44 UTC](https://meta.discourse.org/t/discourse-data-explorer-power-bi-integration/159577 "2020-08-02T12:44:18Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![loginerror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/loginerror/32/156605_2.png) [@loginerror](https://meta.discourse.org/u/loginerror)\
**Post date:** [2 Agosto, 2020 12:44 UTC](https://meta.discourse.org/t/discourse-data-explorer-power-bi-integration/159577/1 "2020-08-02T12:44:19Z")

</div>

# Integración de Power BI con Discourse [Data Explorer](https://meta.discourse.org/t/32566?silent=true)

Recientemente creé una función útil de Power BI que recupera datos de [Data Explorer](https://meta.discourse.org/t/32566?silent=true) directamente en Power BI con una sobrecarga mínima.

Por lo tanto, si eres como yo y deseas que los datos se extraigan y actualicen automáticamente a través de la aplicación Power BI, aquí tienes el código de la función que debes colocar en el Editor Avanzado de Power BI:

```plaintext
(queryID) = let
        resultCount = 1000,
        otherNameForPage = 0,

        GetPage = (otherNameForPage) = let
                content1 = "params={""page"":""" & Number.ToText(otherNameForPage) & """}",
                RawData = Json.Document(Web.Contents(
                    "https://forumURL/admin/plugins/explorer/queries",
                    [RelativePath=Number.ToText(queryID) & "/run",
                        Query=
                        [
                            params="{"page":"" & Number.ToText(otherNameForPage) & """}"
                        ],

                        Headers = [ 
                        #"api-username"="yourAPIUsername",
                        #"api-key"="yourAPIKey",
                        #"Content-Type" = "application/x-www-form-urlencoded"],
                        Content = Text.ToBinary(content1)
                    ]
                    
                ) ),
                resultCount = RawData[result_count]
            in
                if RawData[result_count] = 0 then null else RawData,
            Pages = List.Generate(
                () = [i = 0, RawData = GetPage(i)],
                each [RawData] <> null,
                each [i=[i]+1, RawData = GetPage(i)],
                each Table.Combine(let raw = [RawData] in List.Transform(raw[rows], each Table.FromRows({_}, raw[columns])))),
            Output = Table.Combine(Pages)
in
    Output

```

Y aquí tienes una **consulta de ejemplo de [Data Explorer](https://meta.discourse.org/t/32566?silent=true)**. Incluye la paginación **necesaria** para que la función anterior funcione correctamente (es necesaria incluso si tu consulta devuelve solo 1 página):

```plaintext
--[params]
-- integer :page = 0

SELECT count(*) from badges

OFFSET :page * 1000
LIMIT 1000

```

(puedes adaptar fácilmente tus consultas existentes incluyendo las dos primeras y las dos últimas líneas del ejemplo anterior)

Esta función continuará iterando automáticamente sobre las páginas hasta que no se encuentren más resultados.

# ¿Cómo hacerlo funcionar?

Después de cargar la función en Power BI, necesitarás configurar 2 cosas:

1. El nombre de usuario de la API y la clave de la API (consulta la función anterior para ver los marcadores de posición):

2. El número de ID de la consulta.

# Salida de ejemplo

Esta es la salida de la consulta de ejemplo:

![image](https://global.discourse-cdn.com/meta/original/3X/6/a/6a4da395ce76d220a02f14a7dc9d81d52daf8565.png)

¡Eso es todo! Ahora puedes dar forma a tus datos como quieras.

---

_[View the full topic](https://meta.discourse.org/t/discourse-data-explorer-power-bi-integration/159577)._
