找回密码
 立即注册
搜索
查看: 30149|回复: 136

[科技] 阿里云内部全面推行AI写代码

[复制链接]
     
发表于 2024-4-2 12:14 来自手机 | 显示全部楼层
ycjiang1337 发表于 2024-4-2 11:49
我司现在快把国内外主流的大模型都收集齐了,现在用内网大模型聊天写pandas和pyspark的口水代码,效率极高 ...

glm4 不是放弃开源了?怎么本地部署的
回复

使用道具 举报

     
发表于 2024-4-2 14:10 | 显示全部楼层
ycjiang1337 发表于 2024-4-2 13:43
跟GPT一样,企业采购API接入

我还以为你们内网大模型是本地部署的
回复

使用道具 举报

     
发表于 2024-4-2 21:23 | 显示全部楼层
kemyes 发表于 2024-4-2 21:07
说到Ai编程总是说到前端后端,比较好奇目前有能优化sql的ai不

—— 来自 vivo V2329A, Android 14 ...

有吧, 之前用百度的api时看到过百度提供的prompt模版

  1. 现在你是一名[SQL]大师,请理解我的代码并给出对应的优化建议及示例。我给出的代码是:[SELECT dt,
  2.           imei
  3.    FROM
  4.      (SELECT a.dt,
  5.              a.imei,
  6.              FIRST_VALUE(a.timestamp) OVER(PARTITION BY a.imei,a.dt
  7.                                          ORDER BY TIMESTAMP ASC) first_time ,
  8.                                                                  a.timestamp ,
  9.                                                                  actiontype
  10.       FROM hdp_lbg_zz_zplisting.ods_wb_tb_app_action a
  11.       WHERE a.dt between `${date1}`  and `${date2}`
  12.       AND  from_unixtime(cast(TIMESTAMP/1000 AS int),`yyyyMMdd`)=a.dt
  13. ]
复制代码
  1. 这段SQL代码在查询一个名为`hdp_lbg_zz_zplisting.ods_wb_tb_app_action`的表,该表包含字段`dt`,`imei`,`timestamp`和`actiontype`。查询的目标是在特定的日期范围(`${date1}`和`${date2}`之间)内,按照`imei`和`dt`进行分组,并按照时间戳(`timestamp`)的升序进行排序。对于每个分组,它选择第一个时间戳作为`first_time`。

  2.       一些可能的优化建议:

  3.       1. **窗口函数的优化**:这个查询使用了窗口函数`FIRST_VALUE()`来获取每个分组(根据imei和dt)的时间戳的第一个值。这是一个相对昂贵的操作,特别是在数据集大的情况下。一个可能的优化是直接使用排序(ORDER BY)来代替窗口函数。这可以通过在外部查询中再次排序并选择第一个时间戳来实现。但是,这种方法的缺点是它需要更多的内存,因为它需要存储整个排序结果。
  4.       2. **数据类型的一致性**:在这个查询中,我们首先将`timestamp`字段除以1000,然后转换为Unix时间戳(整数形式),然后再转换为`yyyyMMdd`格式的日期。这一系列的转换可能会消耗一些计算资源,并可能导致精度损失。如果`timestamp`字段已经是以毫秒为单位的Unix时间戳,那么我们可以直接使用它,而不是进行这些转换。
  5.       3. **使用索引**:如果这个查询在生产环境中运行,那么使用索引可能会**提高查询性能。例如,如果查询主要根据`imei`和`dt`进行分组,那么在这两个字段上创建索引会有很大的帮助。

  6.       以下是一个可能的优化后的SQL代码示例:


  7.       ```sql
  8.       SELECT dt,
  9.              imei,
  10.              first_timestamp
  11.       FROM (
  12.         SELECT a.dt,
  13.                a.imei,
  14.                MIN(a.timestamp) OVER (PARTITION BY a.imei, a.dt) first_timestamp,
  15.                actiontype
  16.         FROM hdp_lbg_zz_zplisting.ods_wb_tb_app_action a
  17.         WHERE a.dt BETWEEN `${date1}` AND `${date2}`
  18.           AND a.timestamp >= UNIX_TIMESTAMP(DATE_FORMAT(`${date1}`, `yyyyMMdd`)) * 1000
  19.           AND a.timestamp <= UNIX_TIMESTAMP(DATE_FORMAT(`${date2}`, `yyyyMMdd`)) * 1000
  20.       ) AS x;
  21.       ```
  22.       这个查询在原始查询的基础上进行了以下修改:

  23.       * 移除了不必要的转换。现在我们假设`timestamp`是以毫秒为单位的Unix时间戳,所以我们只需要将它除以1000来得到以秒为单位的Unix时间戳。
  24.       * 使用了MIN()函数代替了FIRST_VALUE()函数来找到每个分组的第一个时间戳。这样做的好处是它不需要额外的内存和计算资源。
  25.       * 在外部查询中添加了过滤条件以减少需要处理的数据量。现在我们只处理在指定的日期范围内的数据。
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-5-21 21:34 , Processed in 0.052952 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表