<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>idea Re: Excel-based Data Lineage for Compose for Data Warehouse - Status changed to: Open - Collecting Feedback in Suggest an Idea</title>
    <link>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/1745899#M3532</link>
    <description>&lt;P&gt;Hi DWH4Fun,&lt;/P&gt;&lt;P&gt;Thank you for your suggestion. It obviously makes sense, so I'm opening this to the community for feedback and voting that will help prioritize.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Tzachi&lt;/P&gt;</description>
    <pubDate>Tue, 22 Sep 2020 09:04:22 GMT</pubDate>
    <dc:creator>Tzachi_Nissim</dc:creator>
    <dc:date>2020-09-22T09:04:22Z</dc:date>
    <item>
      <title>Excel-based Data Lineage for Compose for Data Warehouse</title>
      <link>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idi-p/1734124</link>
      <description>&lt;P&gt;Consumers of our warehouse are asking for an Excel-based data lineage.&amp;nbsp; They would like to see full end to end linage from source (landing) to warehouse to mart tables including exposing any expressions, look-ups, and descriptions.&lt;/P&gt;&lt;P&gt;Justification for this includes:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Excel is the application almost all business users will leverage when documenting data lineage, mappings, and data dictionaries&lt;/LI&gt;&lt;LI&gt;In some cases the consumer is external to our company.&amp;nbsp; It is not feasible to give them access to Compose or send them the HTML version of the Compose on-line documents&lt;/LI&gt;&lt;LI&gt;Users feel that Compose on-online documents are ok, but not great.&amp;nbsp; Issues they face include:&lt;UL&gt;&lt;LI&gt;Availability across the entire organization.&amp;nbsp; There is no single web location all users can access.&lt;/LI&gt;&lt;LI&gt;Does not solve use cases where information must be shared with external clients&lt;/LI&gt;&lt;LI&gt;Data lineage is only at the entity level and not attribute level like is supported in the Compose application&lt;/LI&gt;&lt;LI&gt;Not all internal users will be given read-only access to the Compose application&lt;/LI&gt;&lt;LI&gt;Navigation and search is not user friendly.&amp;nbsp; Search is not across the entire project.&amp;nbsp; There is more hunting and pecking for information via drill-down&lt;/LI&gt;&lt;LI&gt;Similar to the above point, there is no ability to trend across all fields, mappings, expressions, etc.&amp;nbsp; Much easier to do in Excel.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;We have had mixed results trying to maintain it in Excel on our own.&amp;nbsp; It's very manual, time consuming, and prone to errors / omissions. In order to be current and accurate, Compose needs to generate it.&lt;/P&gt;&lt;P&gt;Thx!&lt;/P&gt;</description>
      <pubDate>Fri, 07 Aug 2020 13:58:38 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idi-p/1734124</guid>
      <dc:creator>DWH4Fun</dc:creator>
      <dc:date>2020-08-07T13:58:38Z</dc:date>
    </item>
    <item>
      <title>Re: Excel-based Data Lineage for Compose for Data Warehouse</title>
      <link>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/1745353#M3511</link>
      <description>&lt;P&gt;Tim G wrote a query against the project metadata sqllite db which produces exactly this. there is no reason for this not to be a simple button that exports it into a CSV format, and as part of the Project Documentation. its a query. and its already done. every customer of Compose would benefit from this simple thing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;WITH Mapping&lt;BR /&gt;as (&lt;/P&gt;&lt;P&gt;select map.ID as MappingID,&lt;BR /&gt;json_extract(db.json, '$.database_name') as LandingDB,&lt;BR /&gt;json_extract(db.json, '$.original_sourcedb_name') as SourceDB,&lt;BR /&gt;json_extract(db.json, '$.server_name' ) as SourceServer,&lt;BR /&gt;CASE WHEN json_extract(map.json, '$.mapping_type') = 'QUERY' THEN 'QUERY based mapping' ELSE json_extract(map.json, '$.schema') || '.' || json_extract(map.json,'$.table_name') END as LandingTable,&lt;BR /&gt;json_extract(map.json, '$.mapping_query') as QuerySource,&lt;BR /&gt;map.name as MappingName,json_extract(colmap.value, '$.staging_col_name_int') STAGING_COL_NAME_INT,&lt;BR /&gt;json_extract(colmap.value, '$.mapping_type') as ColMapType,&lt;BR /&gt;json_extract(colmap.value, '$.source_col_name') as SourceColumnName,&lt;BR /&gt;IFNULL( json_extract(colmap.value, '$.lookup.lookup_result_expression.expression_statement'), json_extract(colmap.value, '$.expression.expression_statement') ) as Expression,&lt;BR /&gt;json_extract(map.json, '$.entity_id') as ETY_ID,&lt;BR /&gt;IFNULL(json_extract(dbLKU.json, '$.database_name')||'.','') || json_extract(colmap.value, '$.lookup.lookup_table_schema') || '.' || json_extract(colmap.value,'$.lookup.lookup_table_name') as LKUSourceTable,&lt;BR /&gt;json_extract(colmap.value, '$.lookup.lookup_expression.expression_statement') as LookupCondition&lt;/P&gt;&lt;P&gt;FROM objects map , json_each(map.json, '$.mapping_fields') colmap&lt;BR /&gt;JOIN objects db&lt;BR /&gt;on db.id = json_extract(map.json,'$.database_id')&lt;BR /&gt;LEFT JOIN objects dbLKU&lt;BR /&gt;on dbLKU.ID = json_extract(colmap.value, '$.lookup.lookup_table_database_id')&lt;BR /&gt;),&lt;BR /&gt;TABLEINFO&lt;BR /&gt;as (SELECT&lt;BR /&gt;ETY_ID, COL_ID, ETY_NAME as LogicalEntity,&lt;BR /&gt;CASE WHEN json_extract(COLUMNS.json, '$.history_type') = 'S' THEN&lt;BR /&gt;tblPrefix || ETY_NAME || sat_suffix || json_extract(COLUMNS.json, '$.block')&lt;BR /&gt;ELSE&lt;BR /&gt;tblPrefix || ETY_NAME || hub_suffix&lt;BR /&gt;END as PhysicalVaultTable,&lt;BR /&gt;CASE WHEN DA.type = 'Entity' then 'Relationship' else 'Column' end as AttType,&lt;BR /&gt;CASE WHEN&lt;BR /&gt;IFNULL(json_extract(COLUMNS.json, '$.prefix'),'') || ifnull(COL_NAME, json_extract(DA.json, '$.name') ) ='' THEN IFNULL(json_extract(COLUMNS.json, '$.prefix'),'') || COL_NAME&lt;BR /&gt;ELSE&lt;BR /&gt;IFNULL(json_extract(COLUMNS.json, '$.prefix'),'') || ifnull(COL_NAME, json_extract(DA.json, '$.name') )&lt;BR /&gt;END as ColumnName&lt;BR /&gt;,json_extract(COLUMNS.json,'$.ordinal') /100 as ColumnOrdinal&lt;BR /&gt;,&lt;BR /&gt;json_extract(DA.json,'$.type') as DataType,&lt;BR /&gt;'COLID_'|| COL_ID || '_' || CASE WHEN DA.Type = 'Entity' THEN ETY_PK.id ||'_' || json_extract(ETY_PK.json, '$.pbe') ELSE COL_DOMAIN_ID END as RelatedETYID&lt;/P&gt;&lt;P&gt;FROM (SELECT id as ETY_ID, name as ETY_NAME&lt;BR /&gt;FROM objects ETY&lt;BR /&gt;WHERE ETY.type ='Entity'&lt;BR /&gt;) ENTITY&lt;BR /&gt;JOIN&lt;BR /&gt;(&lt;BR /&gt;select json,&lt;BR /&gt;json_extract(COL.json, '$.poe') COL_PARENT,&lt;BR /&gt;json_extract(COL.json, '$.pbe') COL_DOMAIN_ID,&lt;BR /&gt;id as COL_ID,&lt;BR /&gt;json_extract(COL.json, '$.is_primary') as IS_PK,&lt;BR /&gt;json_extract(COL.json, '$.ordinal') as COL_ORDINAL ,&lt;BR /&gt;json_extract(COL.json, '$.attribute_name') as COL_NAME&lt;BR /&gt;&lt;BR /&gt;FROM objects COL&lt;BR /&gt;WHERE COL.type ='TableColumn' ) COLUMNS&lt;BR /&gt;on COLUMNS.COL_PARENT = ETY_ID&lt;BR /&gt;LEFT JOIN objects DA&lt;BR /&gt;on DA.id = COL_DOMAIN_ID&lt;BR /&gt;LEFT JOIN objects ETY_PK&lt;BR /&gt;on DA.type = 'Entity'&lt;BR /&gt;AND json_extract(ETY_PK.json, '$.poe') = DA.ID&lt;BR /&gt;AND json_extract(ETY_PK.json, '$.is_primary') = 1&lt;BR /&gt;JOIN (select&lt;BR /&gt;json_extract(json, '$.naming_conv.dwh_prefix') as tblPrefix,&lt;BR /&gt;json_extract(json, '$.naming_conv.hub_suffix') as hub_suffix,&lt;BR /&gt;json_extract(json, '$.naming_conv.sat_suffix') as sat_suffix&lt;BR /&gt;from objects where name = 'settings')&lt;BR /&gt;on 1=1&lt;BR /&gt;)&lt;BR /&gt;, FactDims&lt;BR /&gt;as (&lt;BR /&gt;select fd.json,&lt;BR /&gt;json_extract(fd.json, '$.type') as DataMartObject&lt;BR /&gt;, CASE json_extract(fd.json, '$.history_type') WHEN 'N' THEN 'Type 1' WHEN 'S' THEN 'Type 2' END as DimType&lt;BR /&gt;, json_extract(fd.json, '$.root_entity_id') as Root_ETY_ID&lt;BR /&gt;, json_extract(fd.json, '$.display_name') as DMObjectDisplayName&lt;BR /&gt;, replace( json_extract(fd.json, '$.name'), 'DataMart!&amp;#8;!','') as DMPhysicalTableName&lt;BR /&gt;, json_extract(colmap.value, '$.attribute_name') as DMColumnName&lt;BR /&gt;, json_extract(colmap.value, '$.data_type') as DMColumnDataType&lt;BR /&gt;, CASE json_extract(colmap.value, '$.aggregate_function') WHEN 'GROUPBY' THEN json_extract(colmap.value, '$.expression.expression_statement') ELSE json_extract(colmap.value, '$.aggregate_function') ||'( ' || json_extract(colmap.value, '$.expression.expression_statement') || ' )' END as DMSourceExpression&lt;BR /&gt;, reverse(substr( reverse( json_extract(epr.value, '$.alias_parameter')) , 0, instr(reverse(json_extract(epr.value, '$.alias_parameter')), ' '))) as DV_COL_ID, dm.*&lt;BR /&gt;, dm.name as DataMartName&lt;/P&gt;&lt;P&gt;from objects fd, json_each(fd.json, '$.fact_dim_columns') colmap, json_each(colmap.value, '$.expression.alias') epr&lt;BR /&gt;JOIN objects dm&lt;BR /&gt;on dm.id=json_extract(fd.json,'$.datamart_id')&lt;BR /&gt;WHERE fd.type = 'FactDim'&lt;/P&gt;&lt;P&gt;)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SELECT&lt;BR /&gt;T.LogicalEntity ,&lt;BR /&gt;IFNULL( M.MappingName, '** NOT MAPPED **') as MappingName ,&lt;BR /&gt;T.PhysicalVaultTable,&lt;BR /&gt;T.ColumnName,&lt;BR /&gt;T.AttType,&lt;BR /&gt;T.ColumnOrdinal,&lt;BR /&gt;M.LandingDB,&lt;BR /&gt;M.LandingTable,&lt;BR /&gt;M.ColMapType,&lt;BR /&gt;IFNULL(M.Expression, M.SourceColumnName) as SourceExpression ,&lt;BR /&gt;M.LKUSourceTable,&lt;BR /&gt;M.LookupCondition,&lt;BR /&gt;DataMartName,&lt;BR /&gt;FD.DataMartObject as DataMartObjectType,&lt;BR /&gt;FD.DimType,&lt;BR /&gt;FD.DMObjectDisplayName,&lt;BR /&gt;FD.DMPhysicalTableName ,&lt;BR /&gt;FD.DMColumnName,&lt;BR /&gt;FD.DMSourceExpression as DM_Expression,&lt;BR /&gt;M.MappingID,&lt;BR /&gt;&lt;BR /&gt;replace(REPLACE(QuerySource, CHAR(13),' '), CHAR(10), ' ') as QuerySource&lt;/P&gt;&lt;P&gt;FROM TABLEINFO T&lt;BR /&gt;LEFT JOIN FactDims FD&lt;BR /&gt;on FD.DV_COL_ID = T.COL_ID&lt;BR /&gt;LEFT JOIN Mapping M&lt;BR /&gt;on M.ETY_ID = T.ETY_ID&lt;BR /&gt;AND M.STAGING_COL_NAME_INT = T.RelatedETYID&lt;/P&gt;&lt;P&gt;--and DMColumnName = 'TestAtt'&lt;BR /&gt;ORDER BY LogicalEntity, MappingName, PhysicalVaultTable, ColumnOrdinal, DataMartName, DataMartObjectType, DMObjectDisplayName, DMColumnName&lt;BR /&gt;;&lt;/P&gt;</description>
      <pubDate>Sat, 19 Sep 2020 13:29:59 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/1745353#M3511</guid>
      <dc:creator>JorgeUriarte</dc:creator>
      <dc:date>2020-09-19T13:29:59Z</dc:date>
    </item>
    <item>
      <title>Re: Excel-based Data Lineage for Compose for Data Warehouse - Status changed to: Open - Collecting Feedback</title>
      <link>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/1745899#M3532</link>
      <description>&lt;P&gt;Hi DWH4Fun,&lt;/P&gt;&lt;P&gt;Thank you for your suggestion. It obviously makes sense, so I'm opening this to the community for feedback and voting that will help prioritize.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Tzachi&lt;/P&gt;</description>
      <pubDate>Tue, 22 Sep 2020 09:04:22 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/1745899#M3532</guid>
      <dc:creator>Tzachi_Nissim</dc:creator>
      <dc:date>2020-09-22T09:04:22Z</dc:date>
    </item>
    <item>
      <title>Re: Excel-based Data Lineage for Compose for Data Warehouse</title>
      <link>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/2050559#M12224</link>
      <description>&lt;P&gt;Hello ,&lt;/P&gt;
&lt;P&gt;i return to an old subject but which is still relevant for new compose users:&lt;/P&gt;
&lt;P&gt;maybe another way we use it's to use command line to generate&amp;nbsp; a list of CSV files to have these kind of information&lt;/P&gt;
&lt;P&gt;composecli connect htpps://serveurCompose&amp;nbsp; &amp;nbsp;(to connect composer server)&lt;BR /&gt;"C:\Program Files\Qlik\Compose\bin\"ComposeCli.exe export_csv --project {project_name} --outfolder {folder_destination}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;By this way you can see :&lt;/P&gt;
&lt;P&gt;Attribute.csv&lt;/P&gt;
&lt;P&gt;Attributedomain.csv&lt;/P&gt;
&lt;P&gt;custometl.csv&lt;/P&gt;
&lt;P&gt;datamart.csv&lt;/P&gt;
&lt;P&gt;entities.csv&lt;/P&gt;
&lt;P&gt;mappings.csv&lt;/P&gt;
&lt;P&gt;mappingsmetadat.csv&lt;/P&gt;
&lt;P&gt;relationships.csv&lt;/P&gt;
&lt;P&gt;and more&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this will help you&lt;/P&gt;</description>
      <pubDate>Fri, 17 Mar 2023 14:42:19 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/2050559#M12224</guid>
      <dc:creator>jfgiudicelli</dc:creator>
      <dc:date>2023-03-17T14:42:19Z</dc:date>
    </item>
    <item>
      <title>From now on, please track this idea from the Ideation por...</title>
      <link>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/2100306#M13569</link>
      <description>&lt;P&gt;From now on, please track this idea from the Ideation portal.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;A title="Link to new idea" href="https://ideation.qlik.com/app/#/case/274750" target="_blank" rel="noopener"&gt;Link to new idea&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Meghann&lt;/P&gt;&lt;P data-unlink="true"&gt;&lt;EM&gt;NOTE: Upon clicking this link 2 tabs may open - please feel free to close the one with a login page. If you &lt;STRONG&gt;only&lt;/STRONG&gt; see 1 tab with the login page, please try clicking this link first: &lt;STRONG&gt;&lt;A title="Authenticate me!" href="#" target="_blank" rel="noopener"&gt;Authenticate me!&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;t&lt;/EM&gt;&lt;EM&gt;hen try the link above again. Ensure pop-up blocker is off.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Aug 2023 15:27:14 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/2100306#M13569</guid>
      <dc:creator>Meghann_MacDonald</dc:creator>
      <dc:date>2023-08-02T15:27:14Z</dc:date>
    </item>
    <item>
      <title>Re: Excel-based Data Lineage for Compose for Data Warehouse - Status changed to: Closed - Archived</title>
      <link>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/2100307#M13570</link>
      <description />
      <pubDate>Wed, 02 Aug 2023 15:27:15 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Suggest-an-Idea/Excel-based-Data-Lineage-for-Compose-for-Data-Warehouse/idc-p/2100307#M13570</guid>
      <dc:creator>Ideation</dc:creator>
      <dc:date>2023-08-02T15:27:15Z</dc:date>
    </item>
  </channel>
</rss>

