una - importar base de datos mysql consola utf8
Cómo importar datos XBRL a MySQL? (4)
Primero debe darse cuenta de que los documentos XBRL ( instancias ) contienen muchos tipos diferentes de información. Por ejemplo: puede contener información diaria de precios para fondos de inversión, pero también informes trimestrales de IVA o información de solvencia crediticia. XBRL es una forma estándar de comunicación, pero los contenidos tienen sus propias taxonomías (XBRL estandarizadas). Por ejemplo: hay una taxonomía holandesa, en la cual se construye la agencia de ingresos holandesa (con su propia taxonomía), sobre la cual existe una taxonomía específica para la presentación de informes de IVA. Estas taxonomías se definen usando XSD, Xlink y linkbase. Piénselo como el concepto de Dictionairy: la forma en que se construyen las dictionairies es la misma en todas partes (use cada letra del alfabeto para hacer ''capítulos'', ordene las palabras alfabéticamente, etc.), pero un dictionairy griego usa su propio alfabeto, su propias palabras y su propio lenguaje para explicar los contenidos.
Por lo tanto, si solo utiliza uno o varios tipos diferentes de documentos XBRL (que comparten las mismas taxonomías), puede crear una asignación de estas taxonomías a sus propios objetos (base de datos). Si tiene una gama más amplia de taxonomías, tendrá que crear una solución más genérica que pueda ''importar'' taxonomías. Eso será todo un desafío (que es la razón por la que no hay muchas herramientas disponibles en el mercado).
Si tu (r compañía) puede pagarlo, te recomiendo buscar herramientas existentes como MapForce de Altova . De esta forma, no es necesario aprender XBRL, XSD, Xlink y la base de enlaces para comenzar a desarrollar su propia herramienta para analizar estos archivos, puede aprovechar los productos existentes para asignar las taxonomías XBRL a su base de datos / aplicación.
Estoy trabajando en un proyecto que implica el procesamiento de un gran volumen de documentos XBRL (> 1 millón de archivos separados). Soy totalmente nuevo en XBRL y me siento completamente perdido en este momento.
Tengo datos relacionados con esos documentos XBRL en una base de datos MySQL separada y me gustaría agregar los datos XBRL en MySQL para almacenar todo en un db.
¿Cuáles son los mejores métodos para transferir datos de los documentos XBRL a MySQL?
¿Hay alguna biblioteca de procesamiento masivo disponible para ello?
He estado buscando tutoriales sobre esos temas, pero no pude encontrar nada que proporcionara una introducción básica, solo mucha información de alto nivel.
El paradigma natural en teoría para almacenar XBRL en una base de datos sería OLAP, porque XBRL se trata de cubos de datos. OLAP en la parte superior de una base de datos relacional se llamaría ROLAP.
Este no es un problema trivial, porque los hechos tomados de una gran cantidad de taxonomías pueden formar un cubo muy grande y escaso (para las presentaciones SEC son 10k + dimensiones), y también porque la creación de un esquema SQL requiere conocer las taxonomías antes de cualquier importación. Si surgen nuevas taxonomías, uno debe volver a obtener todo el ETL. Esto no hace que las bases de datos relacionales sean adecuadas como solución general.
Si las presentaciones comparten la misma taxonomía y la taxonomía es muy simple (como en: no demasiadas dimensiones), es posible crear un mapeo ad-hoc para almacenar todos los datos en una sola tabla con muchas filas en el ROLAP. sentido (hechos a filas, aspectos a columnas). Algunos proveedores están especializados en el almacenamiento de datos XBRL no dimensionales, en cuyo caso las ofertas SQL tradicionales (o "post-SQL" que se escalan con filas) funcionan bien.
Algunos proveedores crean una tabla para cada hipercubo XBRL en la taxonomía, con un esquema derivado de la red de definición pero diferente para cada hipercubo. Esto puede generar muchas tablas en la base de datos y requiere muchas combinaciones para consultas que involucran múltiples hipercubos.
Algunos otros proveedores hacen suposiciones sobre la estructura XBRL subyacente, o sobre el tipo de consultas que sus usuarios necesitan para ejecutar. Restringir el alcance del problema permite encontrar arquitecturas específicas o esquemas SQL que también pueden hacer el trabajo para estas necesidades específicas.
Para importar grandes cantidades de presentaciones (por ejemplo, todas las presentaciones SEC), nosotros (mi empleador) construimos una asignación genérica sobre almacenamientos de datos NoSQL en lugar de bases de datos relacionales. Un gran número de hechos con un número variable de dimensiones encajan en grandes colecciones de documentos semiestructurados, y las redes se ajustan bien en un formato jerárquico.
Hay algunas soluciones de negocios por ahí
por ejemplo
Espero que sepa que MySQL es un almacenamiento de datos estructurado, mientras que XBRL
es solo una representación para mapear documentos comerciales en formato digital. XBRL
es un documento basado en XML
, lo que implica que no está estructurado y que los datos que necesita del documento pueden o no aparecer en ese documento específico. Puede contener cualquier otra información adicional también. XSD
define cómo se puede estructurar XML y cuántas veces puede aparecer cualquier etiqueta. Ahora para responder a su pregunta, podría usar eXistDB
, que también utilicé anteriormente para almacenar el documento XBRL. Sin embargo, a veces puede ser lento. Si necesita solo algunos datos de XBRL
y necesita almacenarlos en la base de datos MySQL, puede usar XPATH
. En el siguiente código simple de Python, puede tomar los valores de EquityTotalEndingBalance
y ReservesTotalEndingBalance
de este documento .
from lxml import etree
root = etree.fromstring(open("file.xml").read())
nsmap = root.nsmap
nsmap.pop(None) # There was some error without this.
data_one = root.xpath("//iascf-pfs:EquityTotalEndingBalance/text()",namespaces=nsmap)
data_two = root.xpath("//novartis:ReservesTotalEndingBalance/text()",namespaces=nsmap)
print data_one
print data_two
Este código imprimirá los valores:
[''37216000000'', ''36862000000'', ''42245000000'']
[''35903000000'', ''35558000000'', ''40971000000'']
Entonces, ¿cómo puedes resolver tu problema?
O bien, tendría que elegir un almacenamiento de documentos XML basado en
NoSQL
comoeXistDB
y escribir Xpath para obtener los datos particulares.Puede analizar manualmente el documento XBRL como se indica anteriormente e iniciar el XPath directamente y almacenar los datos.
La complejidad surgirá si necesita consumir todos los datos de todo tipo de documento. Por lo tanto, debería limitar lo que va a consumir de esos documentos.