解释Teradata中的查询带

解释Teradata中的查询带,teradata,Teradata,有人能解释Teradata中的查询带吗? 关于这一点,我已经搜索了很多次,但是没有得到我能理解的信息。 请详细一点 谢谢 TERADATA中的查询分带: 查询绑定提供了环境工作流信息 概念: 科学家们通常会用设备绑住鸟类的腿来追踪它们的飞行轨迹。监测和分析通过波段检索到的数据提供了有关该物种的关键信息 DBA遵循同样的过程,他们需要更多关于查询的信息,而不是可用的信息 元数据(如请求用户的名称、工作单元和应用程序名称)非常重要,工作负载管理将跟踪数据仓库的整个使用和查询疑难解答。 查询绑定功能的

有人能解释Teradata中的查询带吗? 关于这一点,我已经搜索了很多次,但是没有得到我能理解的信息。 请详细一点


谢谢

TERADATA中的查询分带:

查询绑定提供了环境工作流信息

概念:

科学家们通常会用设备绑住鸟类的腿来追踪它们的飞行轨迹。监测和分析通过波段检索到的数据提供了有关该物种的关键信息

DBA遵循同样的过程,他们需要更多关于查询的信息,而不是可用的信息

元数据(如请求用户的名称、工作单元和应用程序名称)非常重要,工作负载管理将跟踪数据仓库的整个使用和查询疑难解答。 查询绑定功能的使用方式是,这些元数据详细信息链接到数据库中的查询

查询栏可以包含任意数量的名称或值对,例如发起用户公司ID、部门和位置,以及发起执行开始的时间

SET QUERY BAND = 'name=value; name2=value;' FOR SESSION|TRANSACTION;

这将使用一些名称-值对标记查询。这可以用于管理查询的工作负载管理,例如在TDWM中,您有节流和优先级管理挂钩,这些钩子将优先考虑所有名称2类型,并具有值“value”。这意味着您可以提交关于会话或事务的非常丰富的细节

Prashanth提供了一个与鸟类和乐队很好的类比。亚当在询问具体情况。我可以举几个例子,当查询条带可能非常有用时:

  • 数百名用户通过带有自定义应用程序或报告应用程序(如Business Objects、Tableau或Qlikview)的应用程序服务器使用您的系统。ApplicationServer使用一个用户ID连接到Teradata,但是管理员仍然希望知道哪些用户、部门和用户组生成了每个查询,以便稍后在DBQL中进行分析,或者使用TASM分配适当的系统资源。为此,可以对应用程序进行配置,使每个查询使用“AppUser:User1;Appgroup:DataScientists;QueryType:strategic02”等信息进行“绑定”。尽管ApplicationServer使用一个Teradata用户和有限数量的连接来路由来自数百个用户的所有查询,但每个单独的查询都标记有准确的信息,即是哪个用户发起了查询。然后,您可以基于此信息执行各种分析

  • 假设您有一个复杂的ETL应用程序,并且您希望跟踪和分析您的负载执行情况——什么时候出错了。通常,您需要记录ETL流程的所有步骤,并且必须在日志中指定唯一的负载ID、流程ID、步骤ID等。之所以这样做,是因为您希望能够了解导致此暂停或性能下降的特定流程,如果没有这样的日志记录,就不可能在ETL应用程序的不同运行之间区分相同步骤的运行。一个好的替代方法是打开DBQL,并使用带有Load ID、Process ID、Step ID等的查询带信息来修饰查询。这样,您就可以在DBQL中获得所有必要的信息,而无需创建额外的详细日志表


  • 是的,你所描述的可以用QueryBanding轻松完成;可以将其视为“传输中的密钥对属性马车”。例如,您可以使用bteq或jdbc中的会话属性通过sql或PRBC语法访问它们

    亡灵术。。。现有的答案很好地解释了查询条带是如何工作的,但由于我找不到一个完整的工作示例,我想在这里添加一个

    已经介绍了在Teradata中设置查询带区,因此我将提供一个如何从.NET客户端设置查询带区的示例:

    private void SetQueryBands()
    {
         TdQueryBand qb = Connection.QueryBand;
         qb["CustomApplicationName"] = "MyAppName";
         foreach (string key in CustomQueryBands.Keys)
         {
             qb[key] = CustomQueryBands[key];
         }
    
         Connection.ChangeQueryBand(qb);
    } 
    
    Connection = new TdConnection(GetConnectionString());
    Connection.Open();
    SetQueryBands();
    
    可以找到更多细节

    要检索存储的查询带数据,可以使用以下函数:

    SELECT CollectTimestamp, QueryBand,
       GetQuerybandValue(queryband, 0, 'Key1') AS Value1, 
       GetQuerybandValue(queryband, 0, 'Key2') AS Value2, 
       GetQuerybandValue(queryband, 0, 'Key3') AS Value3, 
    FROM dbql_data.dbqlogtbl
    WHERE dateofday = DATE - 1
       AND queryband LIKE '%somekeyorvalue%'
    

    你读过Teradata手册了吗?你想解决的问题是什么?谢谢你的解释。我还想问一下,你们是否可以给出一些关于查询带应用的具体例子。从我目前的角度来看,QV的真正目的对我来说不是很清楚。我的情况如下。我们有数据仓库,我们使用QlikView为各个部门制作各种应用程序。我们来到QB主题是因为有人建议,跟踪哪个用户正在访问哪个数据会很有用。此外,我认为还提到了安全概念。实际上,QB可以用来控制用户访问吗?最后,一些具体的例子将是无效的帮助。特别是,如果你能参考我描述的情况,我们公司的情况。谢谢