yossifisch
Hola,
Me preguntaba si es posible conectarse a Power BI a la API de Amazon (MWS) para los vendedores. En caso afirmativo, ¿por dónde empezaría en Power BI?
La documentación de la API se encuentra en: https://developer.amazonservices.com/
ZappySys
ZappySys tiene un conector Amazon MWS que le permite realizar consultas utilizando lenguaje SQL e importar datos MWS a Power BI / otras aplicaciones (excel, SSRS, SQL Server). Espero que esto ayude.
https://zappysys.com/blog/import-amazon-mws-data-power-bi/
Credenciales de conexión ODBC para la API de Amazon MWS (clave de acceso, clave secreta, extremo de URL)
Ejemplo de paginación de la API de Amazon MWS: vista previa del resultado de la consulta SQL
Cargar datos de Amazon MWS en Power BI: crear un panel de ventas de Amazon
yossifisch
Publiqué la siguiente idea: https: //ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/33137476-get-data-from-amazon-mar …
Si cree que tiene sentido, ¡vote!
CindySandjo
Tengo el mismo problema. He pasado días tratando de averiguar cómo transferir mis datos a PowerBI o incluso a SSMS. Pero hay poca o ninguna información.
Soy un desarrollador de BI y he trabajado con PowerBI, Tableau, Cognos, SSMS, SSIS y SSRS.
Tal vez podamos completar nuestra propia investigación y trabajar juntos en esto.
Encontré un código que encripta a SHA256 usando Python como se requiere para la firma. Pero incluso después de obtener la firma, no puedo ingresar los datos. Recibo un error.
Estos son mis pasos exactos. Mírelos y vea si puede detectar un error de mi parte. Intenté analizarlo y completar los pasos como se describe en MWS y Python, pero tal vez lo he estado mirando durante demasiado tiempo.
1. Quería comprobar si es posible conectarme a MWS
Descargué PostMan y creé una solicitud.
2. Entré en MWS Scratchpad, completé toda la información para obtener la devolución de una OrderList.
El bloc de notas proporcionado
-La respuesta
-Publicación HTTP
-Cuerda para firmar
OBTENER
webservices.amazon.com/onca/xml/Orders/2013-09-01
AWSAccessKeyId = XXXXXXXXXXXXXXXXXXXXX & Action = ListOrders & CreatedAfter = 2017-08-01T05% 3A00% 3A00Z & MarketplaceId.Id.1 = ATVPDKIKX0DER & MarketplaceId.Id.2 = A2EUQ1WTGCTBG2 & SellerId = XXXXXXXXXXXVStamp_Versión = 2/3/2013 Firma% 12% y 3% de la firma del usuario = 3-12;
3. Luego tomé la cadena para firmar y usando Python3.6, creé un hash con el siguiente código
>>> importar hashlib, hmac, base64
>>> m = bytes (‘OBTENER
webservices.amazon.com/onca/xml/Orders/2013-09-01? 2 & Timestamp = 2017-12-03T15% 3A19% 3A40Z & Version = 2013-09-01 ‘,’ utf-8 ‘)
>>> s = bytes (‘CLAVE SECRETA’, ‘utf-8’)
>>> hash = hmac.new (s, m, hashlib.sha256)
>>> base64.b64encode (hash.digest ())
En terminos mas simples
>>> importar hashlib, hmac, base64
>>> m = bytes (‘Cadena para firmar’, ‘utf-8’)
>>> s = bytes (‘CLAVE SECRETA’, ‘utf-8’)
>>> hash = hmac.new (s, m, hashlib.sha256)
>>> base64.b64encode (hash.digest ())
*** Tal vez sea la forma en que formateé la cadena para firmar. Lo formateé de esta manera porque la forma en que MWS tenía la cadena para firmar con los espacios y en las nuevas líneas no codificaba correctamente en Python. Volvió con errores en los espacios para las nuevas líneas. Así que eliminé los espacios y agregué un? entre la fecha de la versión y AWSAccessKeyID ***
Hay un margen de tiempo de 15 minutos entre su marca de tiempo y el momento en que envía la solicitud. así que me aseguré de cumplir con el plazo que figuraba en mi firma.
4. Tomé el hash obtenido en Python, y lo agregué al código como la firma como «& Signature = hash» y edité la primera parte del enlace para que se ajustara a las recomendaciones de los documentos en línea de WMS.
Consulta final
HTTPS: //mws.amazonservices.com/Orders/2013-09-01? AWSAccessKeyId = XXXXXXXXXXXXXXXXXX & Action = ListOrders …
Entré tanto en PostMan como en PowerBI y no funciona.
Siento que esto está muy cerca, pero es posible que me falte un paso o que tenga algún error de sintaxis.
Si tiene algún conocimiento sobre alguna parte o este proceso, por favor ayude.
Aquí hay algunos recursos que utilicé para completar este
Escritorio PowerBI
Cartero
https://www.getpostman.com/
Bloc de notas MWS
https://mws.amazonservices.com/scratchpad/index.html
Secciones diferentes de documentos para desarrolladores de MWS
Crear una cadena de consulta – http://docs.developer.amazonservices.com/en_US/dev_guide/DG_QueryString.html
Firma de una solicitud de consulta –http://docs.developer.amazonservices.com/en_US/dev_guide/DG_SigningQueryRequest.html
Proceso de firma de la versión 2 http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html
Parámetros obligatorios para la solicitud ListOrders – http://docs.developer.amazonservices.com/en_US/orders-2013-09-01/Orders_ListOrders.html
Pitón
Hashlib – https://docs.python.org/3/library/hashlib.html
Base64 – https://docs.python.org/3/library/base64.html#module-base64
Todas las demás cosas de Python que leo en los foros
Hawdong
En respuesta a CindySandjo
Funciona absolutamente con Postman. He aquí cómo en aproximadamente 2 pasos:
1) En Postman, defina Body como tal:
Para evitar que escriba, aquí está el código. Asegúrese de reemplazar las claves / secretos con los suyos.
AWSAccessKeyId:YOURACCESSKEY Action:GetReportRequestCount Merchant:YOURMERCHANTKEY MWSAuthToken:amzn.mws.e6afcd81-0714-a5fa-223e-656b6e2e4a1e SignatureVersion:2 Timestamp:{{timestamp}} Version:2009-01-01 Signature:{{signature}} SignatureMethod:HmacSHA256
2) Defina el script de solicitud previa de la siguiente manera:
Para evitar que escriba, aquí está el código. Asegúrese de reemplazar las claves / secretos con los suyos.
var CryptoJS = require('crypto-js'); var timestamp = new Date().toISOString(); pm.environment.set("timestamp", timestamp); var post = "POSTnmws.amazonservices.comn/nAWSAccessKeyId=YOURACCESSKEY&Action=GetReportRequestCount&MWSAuthToken=amzn.mws.e6afcd81-0714-a5fa-223e-656b6e2e4a1e&Merchant=YOURMERCHANTID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=" + encodeURIComponent(timestamp) + "&Version=2009-01-01"; var hash = CryptoJS.HmacSHA256(post, "YOUR SECRET KEY"); var hashInBase64 = CryptoJS.enc.Base64.stringify(hash); pm.environment.set("signature", hashInBase64);
La respuesta de MWS:
michaelsh
En respuesta a Hawdong
@CindySandjo @hawdong
¿Has logrado conectarte?
En Power Query no puedo encontrar una función hash SHA1 / SHA256 para generar oauth_signature
powerbipowerbi
Hola,
¿Encontraste alguna solución para este problema? ¿La API funciona para ti?
powerbipowerbi
Hola,
¿Encontraste alguna solución para este problema? ¿La API funciona para ti?
yossifisch
En respuesta a powerbipowerbi
Esperaba obtener una explicación más profana. No soy un programador profesional.
El artículo proporcionado por @ v-yuezhe-msft no parece abordar el cifrado SHA que requiere MWS.
Me sorprende que haya tan poca información sobre este tema, creo que la mía es la única publicación en este foro.
v-yuezhe-msft
@yossifisch,
¿Puede comenzar a conectarse a Amazon MWS usando «Obtener datos-> Web»? en Power BI Desktop, ingrese los parámetros de encabezado siguiendo la guía de este artículo en la siguiente captura de pantalla, y es posible que también deba pasar algunos parámetros en su URL como se describe en este blog similar.
También hay un blog similar sobre cómo conectarse a la API en Power BI Desktop para su referencia:
http://angryanalyticsblog.azurewebsites.net/index.php/2016/05/16/api-strategies-with-power-bi/
Saludos,
Lydia