Dgreen23
He creado un conjunto de datos push y lo he hecho funcionar y formatear la mayor parte del tiempo. El problema que tengo es que los datos publicados en él parecen contener el encabezado frente al valor, lo cual no queremos.
¡Cualquier ayuda para que estos datos se representen correctamente sería extremadamente útil!
lbendlin
Idealmente, su fuente de datos tiene cosas como LIMIT y OFFSET que puede usar para paginar. Si no, haz la paginación en Powershell.
lbendlin
Idealmente, su fuente de datos tiene cosas como LIMIT y OFFSET que puede usar para paginar. Si no, haz la paginación en Powershell.
lbendlin
Realice su ejecución de la paginación del molino, por ejemplo, 5K filas a la vez. Idealmente, podría hacerlo en la fuente de datos como parte de la llamada GET.
Pero tengo la sensación de que está abusando de los conjuntos de datos push para algo para lo que no fueron diseñados.
Dgreen23
En respuesta a lbendlin
@lbendlin,
Soy lo suficientemente nuevo en esto, no estoy seguro de cómo funcionaría uno común y corriente. ¿Solo haría varias declaraciones get y de alguna manera seleccionaría filas de arriba hacia abajo ignorando una parte de las devoluciones?
lbendlin
No me preocuparía por el identificador de registro, debería funcionar sin él. Lo que parece que te falta es un campo de marca de tiempo UTC. Eso es obligatorio para los conjuntos de datos push.
Aquí hay un ejemplo usando Powershell (lo uso para monitorear el estado de los miembros del clúster de la puerta de enlace)
#capture stats
$mem = (Get-Counter 'MemoryAvailable MBytes').CounterSamples.CookedValue
$proc = (Get-Counter 'Processor(_Total)% Processor Time').CounterSamples.CookedValue
$disk = (Get-Counter 'LogicalDisk(C:)% free space').CounterSamples.CookedValue
$date = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:00.000Z')
$payload = @{
"Host" = $env:computername
"Timestamp" = $date
"Available Memory in MB" = $mem
"Processor Load %" = $proc
"% Free on C:" = $disk
}
#enforce TLS1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
#push URL
$endpoint = "https://api.powerbi.com/beta/<tenant id>/datasets/<dataset id>/rows?key=<push key>"
Invoke-RestMethod -Method Post -Uri "$endpoint" -Body (ConvertTo-Json @($payload))
Dgreen23
En respuesta a lbendlin
@lbendlin,
No estoy completamente seguro de que se requiera una UTC en este caso. Tengo el siguiente código funcionando bien con una sola entrada y los datos ahora parecen venir como deberían:
$ encabezados = Nuevo objeto «System.Collections.Generic.Dictionary[[String],[String]]»
$ headers.Add («Autorización», «Su autorización»)
$ response = Invoke-RestMethod ‘Donde los datos son’ -Method ‘GET’ -Headers $ headers
Salida de escritura «»
Salida de escritura «»
$ headers2 = New-Object «System.Collections.Generic.Dictionary[[String],[String]]»
$ headers2.Add («Tipo de contenido», «aplicación / json»)
escribir-salida $ cuerpo
$ response2 = Invoke-RestMethod ‘Dónde deben ir los datos’ -Method ‘POST’ -Headers $ headers2 -Body (ConvertTo-Json @ ($ response.value))
$ respuesta2 | ConvertTo-Json
El problema ahora es que el conjunto de datos que voy a impulsar tiene un valor aproximado de 24k líneas. Power bi tiene una limitación de 10k líneas por publicación y solo 5 publicaciones en cola a la vez. ¿Cuál crees que sería la mejor manera de dividir mi respuesta del método Invoke get?
lbendlin
Muestre el JSON que está utilizando para insertar una fila en el conjunto de datos. Debería verse así:
[
{
"host" :"AAAAA555555",
"temperature" :98.6,
"humidity" :98.6,
"timestamp" :"AAAAA555555",
"utc" :"2021-05-30T22:43:38.298Z",
"pressure" :98.6
}
]
Dgreen23
En respuesta a lbendlin
@lbendlin,
Actualmente, los datos están siendo llamados por Invoke-Restmethod Get y luego pasan por el proceso ConvertTo-Json antes de ser devueltos como Invoke-Restmethod Post. Los datos se ven así actualmente y faltan el primer y último paréntesis que tiene el suyo:
{
«JobOpDtl_Company01»: «x»,
«ResourceGroup_JCDept»: x,
«ResourceTimeUsed1_ResourceGrpID»: x,
«ResourceTimeUsed1_ResourceID»: x,
«Calculated_RegionCode»: «x»,
«JobOpDtl_JobNum01»: «x»,
«JobHead_PartNum»: «x»,
«JobHead_RevisionNum»: «x»,
«Calculated_Op»: x,
«JobOper_OpCode»: «x»,
«JobHead_ProdQty»: «x»,
«JobOper_QtyCompleted»: «x»,
«Calculated_piecesRemaining»: «x»,
«JobOper_EstSetHours»: «x»,
«JobOper_ActSetupHours»: «x»,
«JobOper_EstProdHours»: «x»,
«JobOper_ActProdHours»: «x»,
«JobHead_ReqDueDate»: «x»,
«JobOper_DueDate»: «x»,
«JobOper_StartDate»: «x»,
«JobHead_SchedCode»: «x»,
«Calculated_PriorOp»: x,
«ResourceTimeUsed4_ResourceGrpID»: x,
«Calculated_NextOp»: x,
«ResourceTimeUsed5_ResourceGrpID»: x,
«Customer_Name»: «x»,
«Nombre_proveedor»: x,
«Calculated_DaysInDepartment»: «x»
}
¿Cómo haríamos para incluir el paréntesis de apertura y cierre en los datos?